繁体   English   中英

MySQL - 在同一SQL的嵌套SQL语句中使用select字段值

[英]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 = IDWHERE 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM