Vielleicht kann u Vereinigung alle für diese. Mit diesem Operator können Sie die Ergebnismengen mehrerer Abfragen zusammenführen und dabei alle Zeilen beibehalten. Beachten Sie, dass ein UNION-Operator (ohne das Schlüsselwort ALL) alle doppelten Zeilen löscht, die in der Ergebnismenge vorhanden sind. Der UNION ALL-Operator behält alle Zeilen aus jeder Abfrage bei (und wird wahrscheinlich eine bessere Leistung erzielen, da der Aufwand für die Durchführung der doppelten Prüfungs- und Entfernungsoperation nicht gegeben ist).
Die Anzahl der Spalten und der Datentyp jeder Spalte müssen in jeder der Abfragen übereinstimmen. Wenn eine der Abfragen mehr Spalten als die andere enthält, fügen wir manchmal Dummy-Ausdrücke in die andere Abfrage ein, damit die Spalten und Datentypen übereinstimmen. Häufig ist es hilfreich, in die SELECT-Liste jeder Abfrage, die ein Literal zurückgibt, einen Ausdruck (eine zusätzliche Spalte) einzufügen, um anzuzeigen, welche der Abfragen die "Quelle" der Zeile war.
SELECT 'col1' AS source, col23, col343, col33, d FROM table1 WHERE ...
UNION ALL
SELECT 'col2', t2.fee, table2.fi, table2.fo, 'fum' FROM table2 JOIN table3 ON ...
UNION ALL
SELECT 'col3', '1', '2', buckle, my_shoe FROM table4
Sie eine Abfrage wie dies in einer Reihe von Klammern wickeln kann, und es als Inline-Ansicht (oder „abgeleitete Tabelle“, in MySQL-Jargon), so dass Sie Aggregat Operationen auf alle der ausführen können Reihen. Beispiel:
select one.a
, SUM(one.b)
FROM (
SELECT 'q1' AS source, a, b, c, d FROM t1
UNION ALL
SELECT 'q2', t2.fee, t2.fi, t2.fo, 'fum' FROM t2
) one
GROUP BY one.a
ORDER BY one.a
Aber ich denke, Tabellen beitreten besser geeignet. Hoffe, dass Sie helfen,
Warum möchten Sie ** nicht ** Joins verwenden? – Sjon
seine möglichkeit ohne beitreten? Lazyloading oder sowas !! – mohsen
Ich denke, Beitritt ist auch besser. Können Sie uns mehr darüber erzählen, wie Sie Ihre Ausgabe wünschen? –