WHERE statement after a UNION in SQL?

后端 未结 3 982
挽巷
挽巷 2020-12-12 23:29

How do I apply a WHERE statement after a UNION in SQL/MySQL?

相关标签:
3条回答
  • 2020-12-12 23:53

    You probably need to wrap the UNION in a sub-SELECT and apply the WHERE clause afterward:

    SELECT * FROM (
        SELECT * FROM Table1 WHERE Field1 = Value1
        UNION
        SELECT * FROM Table2 WHERE Field1 = Value2
    ) AS t WHERE Field2 = Value3
    

    Basically, the UNION is looking for two complete SELECT statements to combine, and the WHERE clause is part of the SELECT statement.

    It may make more sense to apply the outer WHERE clause to both of the inner queries. You'll probably want to benchmark the performance of both approaches and see which works better for you.

    0 讨论(0)
  • 2020-12-12 23:56
    select column1..... from table1
    where column1=''
    union
    select column1..... from table2
    where column1= ''
    
    0 讨论(0)
  • 2020-12-13 00:04

    If you want to apply the WHERE clause to the result of the UNION, then you have to embed the UNION in the FROM clause:

    SELECT *
      FROM (SELECT * FROM TableA
            UNION
            SELECT * FROM TableB
           ) AS U
     WHERE U.Col1 = ...
    

    I'm assuming TableA and TableB are union-compatible. You could also apply a WHERE clause to each of the individual SELECT statements in the UNION, of course.

    0 讨论(0)
提交回复
热议问题