【问题标题】:correlated subquery between two tables两个表之间的相关子查询
【发布时间】:2018-01-17 22:57:34
【问题描述】:

我有两张桌子:

我正在尝试应用相同的逻辑:http://www.dofactory.com/sql/subquery(最后一个示例)

我想出了这个:

SELECT id, project_name, 
    slug = (SELECT slug 
            FROM project_slugs ps 
            WHERE ps.project_id = p.id 
            ORDER BY created ASC 
            LIMIT 1) 
FROM projects p;

但是我收到错误“#1054 - '字段列表'中的未知列 'slug'”。我意识到 projects 表中不存在 slug 字段,但示例中的 OrderCount 字段也不存在。我做错了什么?

【问题讨论】:

    标签: mysql sql database phpmyadmin


    【解决方案1】:

    应该是

    SELECT 
       id,
       project_name,
         (SELECT slug FROM 
           project_slugs ps 
           WHERE ps.project_id = p.id 
           ORDER BY created ASC LIMIT 1) as slug 
     FROM projects p;
    

    其中子查询称为 slug 是别名,可以是任何名称。

    【讨论】:

    • 出于好奇,我显示的链接中的最后一个示例没有该字段的别名(两个表中都不存在)。效果如何?
    • 老实说,我认为这种语法(OP)适用于某些数据库类型,但如果您想始终保持一致,只需使用标准格式
    • @Alex 该网站似乎适用于 SQL-Server,尽管我不确定这是否会有所不同。我认为最后一个例子的语法是错误的。当您在 SELECT 列表中写入 xxx = yyy 时,这是一种比较,而不是为表达式指定名称。
    猜你喜欢
    • 2016-03-05
    • 2021-11-19
    • 2011-04-19
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    • 1970-01-01
    相关资源
    最近更新 更多