我有以下 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
有问题。
如何在嵌套选择中使用第一个选择中的 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 = <b><i>a.</i></b>ID
UNION
SELECT title
FROM `table_b` AS b
JOIN table_c ON c.id = b.id
WHERE b.another_id = <b><i>a.</i></b>ID
) AS other_titles
FROM table_a <b><i>AS a</i></b>
请记住,您在子查询中实际引用的是 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 = <b>x.ID</b>
UNION
SELECT title
FROM `table_b` AS b
JOIN table_c ON c.id = b.id
WHERE b.another_id = <b>x.ID</b>
) AS other_titles
FROM (
SELECT
a.id AS ID,
a.title,
FROM table_a AS a
) x
关于MySQL - 在同一 SQL 的嵌套 SQL 语句中使用 select 字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5947732/