mysql使用UNION查询中select as where子句的结果

时间:2017-04-29 20:49:16

标签: mysql

我在表格中有一个表格:

id   name      to_include
1    wanted1   null
2    wanted2   wanted1

如果查询是针对want2,那么我需要一种方法在WHERE子句中使用 to_include 列中的值(在本例中为 wanted1 ) 我试过这样的事情:

SELECT * FROM (
    SELECT * FROM A WHERE name = 'wanted2'
) AS B
UNION
SELECT * FROM A WHERE A.name = B.to_include

出现此错误: 未知栏' B.to_include'在' where子句

预期结果: 示例表中包含两行的记录集。

1 个答案:

答案 0 :(得分:3)

您无法将UNION中的先前查询称为别名。 UNION中的每个查询都是独立处理的,然后结合起来。

UNION中的第二个查询需要是JOIN,您需要在执行此操作时重复第一个查询中的条件。

SELECT * 
FROM yourTable WHERE name = 'wanted2'

UNION

SELECT b.*
FROM yourTable AS a
JOIN yourTable AS b ON b.name = a.to_include
WHERE a.name = 'wanted2'

DEMO