[英]MySQL - Use select field value in nested SQL statement of the same SQL
我有以下SQL查询
SELECT
a.id AS ID, a.title,
(
SELECT Group_Concat( title )
FROM (
SELECT title
FROM `table_b` AS b
JOIN table_c ON c.id = b.id
WHERE b.id = ID
UNION
SELECT title
FROM `table_b` AS b
JOIN table_c ON c.id = b.id
WHERE b.another_id = ID
) AS other_titles
FROM table_a
但是它没有工作,并且在嵌套SQL部分中有部件WHERE b.id = ID
和WHERE b.another_id = ID
的问题。
如何在嵌套选择中使用第一个选择( SELECT a.id AS ID
)中的SELECT a.id AS ID
?
我认为你在这里所谓的相关子查询 。 它看起来非常有前途,似乎只缺少几个最终笔画(用粗体斜体突出显示):
SELECT
a.id AS ID,
a.title,
(
SELECT Group_Concat( title )
FROM (
SELECT title
FROM `table_b` AS b
JOIN table_c ON c.id = b.id
WHERE b.id = ID
UNION
SELECT title
FROM `table_b` AS b
JOIN table_c ON c.id = b.id
WHERE b.another_id = ID
) AS other_titles
FROM table_a
请记住,您在子查询中实际引用的是a.id
,而不是ID
别名。 (你不能在那里引用别名。)
如果a.id
是一个复杂的表达式,并且你不太乐意在子查询中重复它,那么你可能需要重构整个查询,可能是这样的:
SELECT
x.ID,
x.title,
(
SELECT Group_Concat( title )
FROM (
SELECT title
FROM `table_b` AS b
JOIN table_c ON c.id = b.id
WHERE b.id = x.ID
UNION
SELECT title
FROM `table_b` AS b
JOIN table_c ON c.id = b.id
WHERE b.another_id = x.ID
) AS other_titles
FROM (
SELECT
a.id AS ID,
a.title,
FROM table_a AS a
) x
您不能在FROM子句中选择值。 您只能使用变量来动态设置表名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.