我在表格中有一个表格:
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子句
预期结果: 示例表中包含两行的记录集。
答案 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'