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

时间:2012-08-23 07:05:39

标签: mysql subquery group-concat

我有一个问题,我似乎找不到答案(我很难解决真正的问题)。

我有一个相当大的查询,工作正常... 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" ;)

这个subqery给我回了超过1行,我不明白怎么做。

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

此问题的解决方案是添加

GROUP BY cal_id_user
在IF条件下的两个SELECTS中

有人可以向我解释这个问题是怎么回事吗?不幸的是,我没有找到这种问题的确切答案。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

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