Wie wende ich eine WHERE-Anweisung nach einer UNION in SQL / MySQL an?
71
Wenn Sie die WHERE-Klausel auf das Ergebnis der UNION anwenden möchten, müssen Sie die UNION in die FROM-Klausel einbetten:
SELECT *
FROM (SELECT * FROM TableA
UNION
SELECT * FROM TableB
) AS U
WHERE U.Col1 = ...
Ich gehe davon aus, dass TableA und TableB gewerkschaftskompatibel sind. Natürlich können Sie auch eine WHERE-Klausel auf jede einzelne SELECT-Anweisung in der UNION anwenden.
Sie müssen das wahrscheinlich
UNION
in ein Unterzeichen einschließenSELECT
und anschließend dieWHERE
Klausel anwenden :SELECT * FROM ( SELECT * FROM Table1 WHERE Field1 = Value1 UNION SELECT * FROM Table2 WHERE Field1 = Value2 ) AS t WHERE Field2 = Value3
Grundsätzlich
UNION
sucht das nach zwei vollständigenSELECT
Anweisungen zum Kombinieren, und dieWHERE
Klausel ist Teil derSELECT
Anweisung.Es kann sinnvoller sein, die äußere
WHERE
Klausel auf beide inneren Abfragen anzuwenden . Sie möchten wahrscheinlich die Leistung beider Ansätze bewerten und herausfinden, welche für Sie besser funktioniert.quelle
select column1..... from table1 where column1='' union select column1..... from table2 where column1= ''
quelle