You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL关联查询报Subquery returns more than 1 row错误求助

错误原因说明

  1. 第一次报#1242 - Subquery returns more than 1 row:SELECT后的标量子查询要求单次只能返回1行1列的结果,你写的子查询没有关联外层的产品ID,单独执行会返回所有product_id对应的品牌拼接结果(多行),因此触发报错。
  2. 第二次报#1054 - Unknown column 'products_brands.product_id' in 'on clause':你在子查询中只查询了拼接后的品牌字段,没有把关联需要的product_id字段查询出来,外层JOIN时找不到对应字段触发报错。
  3. 另外你两次编写的SQL都存在字段名和提供的表结构不匹配的问题:products表的产品字段名为Products而非Product_Name,products_brands表的品牌字段名为Brands而非brand_name,字段名写错也会导致执行报错。

正确实现SQL

推荐写法:先关联表再分组拼接,逻辑清晰性能更优

SELECT
  p.Products,
  GROUP_CONCAT(pb.Brands SEPARATOR ',') AS Brands
FROM products p
LEFT JOIN products_brands pb ON p.Serialnum = pb.product_id
GROUP BY p.Serialnum, p.Products

如果你不需要保留没有对应品牌的产品,把LEFT JOIN替换为INNER JOIN即可;如果需要拼接的品牌去重,可以修改为GROUP_CONCAT(DISTINCT pb.Brands SEPARATOR ',')。

也可以用关联子查询实现,和你最初的写法逻辑接近:

SELECT
  p.Serialnum,
  p.Products,
  (
    SELECT GROUP_CONCAT(pb.Brands)
    FROM products_brands pb
    WHERE pb.product_id = p.Serialnum
  ) AS Brands
FROM products p

内容的提问来源于stack exchange,提问作者Osama Zubair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:18:03