【问题标题】:SQL aliases for subquery子查询的 SQL 别名
【发布时间】:2013-02-20 18:16:38
【问题描述】:

我对以下查询有疑问:

SELECT * FROM (
  (SELECT * FROM Images 
   WHERE create_user_id=:user_id) RIGHT INNER JOIN 
  (SELECT * FROM PhotoGallery) ON id=centity_id
 )
 ORDER BY centity_id;

我得到 1248 - 每个派生表都必须有自己的别名错误,我知道我需要为这些表提供别名,但无论我做什么,我总是会出错。谁能帮我解决这个问题?非常感谢!

【问题讨论】:

  • 我认为您必须为子查询提供表别名,例如 (SELECT * FROM Images WHERE create_user_id=:user_id) as TableA

标签: mysql sql yii


【解决方案1】:

您的子查询需要一个别名。比如:

SELECT * FROM (
  (SELECT *
   FROM Images 
   WHERE create_user_id=:user_id
  ) i RIGHT INNER JOIN 
  PhotoGallery pg
  ON i.id=pg.centity_id
 )
 ORDER BY centity_id;

【讨论】:

    【解决方案2】:

    我从未听说过支持“RIGHT INNER JOIN”的 dbms。选择一个

    • 内连接,或
    • 右外连接,或
    • RIGHT JOIN(应该与 RIGHT OUTER JOIN 相同)。

    【讨论】:

      【解决方案3】:

      如果你在做一个选择*,你不需要做一个子查询。

      SELECT * FROM Images 
        RIGHT OUTER JOIN PhotoGallery ON id=centity_id
      WHERE create_user_id = :user_id
      ORDER BY centity_id;
      

      【讨论】:

        【解决方案4】:

        试试这个

        SELECT * 
          FROM Images i RIGHT JOIN
               PhotoGallery p ON i.id=p.centity_id
         WHERE i.create_user_id=:user_id
         ORDER BY p.centity_id
        

        根据您的 DDL,您所需的输出连接可能是 RIGHTINNERLEFT,但不是 RIGHT INNER JOIN

        【讨论】:

        • @kokoseq 不客气。如果有帮助,请考虑accept 的答案。编码愉快。
        猜你喜欢
        • 2013-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-09
        • 1970-01-01
        • 2022-01-15
        相关资源
        最近更新 更多