重用联合选择中的查询

时间:2018-10-16 19:30:40

标签: mysql sql

我有一个遵循此模式的查询:

SELECT * FROM
(
    SELECT  a
    FROM    b
) `firstQuery`

UNION

SELECT * FROM
(
    SELECT  b
    FROM    c
) `secondQuery`

但是我想secondQueryfirstQuery中排除行

SELECT * FROM
(
    SELECT  a
    FROM    b
) `firstQuery`
UNION
SELECT * FROM
(
    SELECT  b
    FROM    c
    WHERE NOT EXISTS
    (
        SELECT * FROM `firstQuery`
    )
) `secondQuery`

不起作用。 有人可以指出我正确的方向吗?如何重用子查询的结果?

1 个答案:

答案 0 :(得分:1)

  

UNION已经从结果集中删除了重复项,因此您只能从“ secondquery”中获得“ firstquery”尚未返回的结果– @Aaron Dietz

亚伦说得很对。谢谢!