【问题标题】:Using SELECT and concatenation MySQL?使用 SELECT 和连接 MySQL?
【发布时间】:2018-10-24 11:45:48
【问题描述】:

https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_where

这行得通:

SELECT
    s.*,
    (SELECT ProductName
     FROM Products
     WHERE SupplierID = s.SupplierID LIMIT 1) AS ProductNames
FROM
    Suppliers s

我想用这样的东西:

SELECT
    s.*,
    GROUP_CONCAT(SELECT ProductName
                 FROM Products
                 WHERE SupplierID = s.SupplierID) AS ProductNames
FROM
    Suppliers s

每行供应商的显示位置,即使 ProductNames 为空,但它会给出错误。

这样的事情可能吗?我知道 LEFT JOIN 也可以。

【问题讨论】:

  • 这可能是个人喜好,但我严格避免在SELECT 子句中使用子查询,除非绝对重要。我认为LEFT JOIN 将是一个更合适的解决方案。您是否已经知道如何使用LEFT JOIN 编写查询?
  • 我的实际查询需要很多连接。通常我会使用很多内部连接,但即使连接中的项目不存在,我也希望它显示出来。所以我尝试将它们全部更改为左连接,但它无法正常工作。
  • 您能否发布您的LEFT JOIN 查询的相关部分?
  • 我已将其添加到我的问题中
  • 我已经添加了另一个尝试 - 它给出了一个错误

标签: mysql sql


【解决方案1】:

我想通了

https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_where

SELECT s.*,
(SELECT GROUP_CONCAT(ProductName) FROM Products WHERE SupplierID = s.SupplierID) AS ProductNames
FROM Suppliers s

【讨论】:

    猜你喜欢
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 2011-02-25
    • 2020-04-23
    • 2012-11-13
    • 2011-09-18
    • 1970-01-01
    相关资源
    最近更新 更多