gpt4 book ai didi

mysql - Bug - SELECT GROUP_CONCAT 如何在子查询中返回多于 1 行?

转载 作者:行者123 更新时间:2023-11-29 14:19:02 30 4
gpt4 key购买 nike

我有一个问题,但我似乎还没有找到答案(虽然我已经解决了真正的问题)。

我有一个相当大的查询,可以正常工作.. 3-4个月,然后通过添加项目并在应用程序内工作进行一些更改后,带有group_concat的子查询返回超过1行,我知道了group_concat的要点是将所有项目连接到 1 行中?!

简化的查询如下:

(SELECT * FROM (SELECT id,
(other_selects),
(SELECT GROUP_CONCAT(' ',IF(user_nume IS NOT NULL, (
SELECT CONCAT(user_nume,' ',user_prenume)
FROM table
WHERE u2.user_id = cal_id_user
AND i1.cai_id = cal_id_imobil
), (
SELECT user_company
FROM table
WHERE u2.user_id = cal_id_user
AND i1.cai_id = cal_id_imobil
) ))
FROM table2 u2) as locatari,
( other selects )
.........................
FROM table3 i1
...... JOINS ............
GROUP BY cai_id
ORDER BY cai_id DESC)t" ;)

这个子查询返回给我的行数超过 1 行,但我不明白是怎么回事。

我必须提到我删除了表名,并且 JOINS 或其他语法错误没有问题。

这个问题的解决方案是添加一个

GROUP BY cal_id_user

在 IF 条件内的两个 SELECTS 中。

有人可以向我解释一下这个问题是如何发生的吗?不幸的是,我没有找到此类问题的确切答案。

感谢您的宝贵时间。

最佳答案

问题在于 MySQL 允许您使用没有 GROUP BY 子句的聚合函数,这是疯狂的。如果没有 GROUP BY,您的查询可以在 MySQL 中运行,但这并不意味着它是正确的。 (在 MSSQL 中尝试一下,您就会看到。)

关于mysql - Bug - SELECT GROUP_CONCAT 如何在子查询中返回多于 1 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12086400/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com