Wie wende ich eine WHERE-Anweisung nach einer UNION in SQL / MySQL an?
Antworten:
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 UNIONin ein Unterzeichen einschließen SELECTund anschließend die WHEREKlausel anwenden :
SELECT * FROM (
SELECT * FROM Table1 WHERE Field1 = Value1
UNION
SELECT * FROM Table2 WHERE Field1 = Value2
) AS t WHERE Field2 = Value3
Grundsätzlich UNIONsucht das nach zwei vollständigen SELECTAnweisungen zum Kombinieren, und die WHEREKlausel ist Teil der SELECTAnweisung.
Es kann sinnvoller sein, die äußere WHEREKlausel auf beide inneren Abfragen anzuwenden . Sie möchten wahrscheinlich die Leistung beider Ansätze bewerten und herausfinden, welche für Sie besser funktioniert.
select column1..... from table1
where column1=''
union
select column1..... from table2
where column1= ''