GROUP_CONCAT 外部值和 select 内部值 returns 之间的 DATEDIFF 超过 1 行

GROUP_CONCAT with DATEDIFF between outer value and a select inner value returns more than 1 row

所以我有一个 table 的用户和 Child,我的想法是连接用户的加入日期和 child 的日期之间的日期差异。

一个特定的用户有 2 children,当我 运行 a group_concat 使用这个

SELECT u.id,GROUP_CONCAT(DATEDIFF(FROM_UNIXTIME(u.timestamp/1000),(SELECT DATE(c2.dob) FROM Child c2 WHERE c2.user_id = u.id)) SEPARATOR ',')  AS childAge FROM User u
WHERE u.id = 1
GROUP BY u.id;

这给出了一个子查询returns多于1行的错误。好吧,我在子选择中 运行 按 c2.user_id 分组,但这违背了 group_concat 的目的!我刚得到第一个 child id datediff.

好吧,我已经回答了我自己的问题,在午餐时间思考了更多之后,我就是这样解决的:

SELECT u.id,(SELECT GROUP_CONCAT(DATEDIFF(FROM_UNIXTIME(u.timestamp/1000),DATE(c2.dob)) SEPARATOR ',') FROM Child c2 WHERE c2.user_id = u.id)  AS childAge FROM User u

WHERE u.id = 1
GROUP BY u.id;

根据我(有限)的理解,这是可行的,因为我从 Child table 中取出单个 dob,而不是在子 select 内的 DATEDIFF 的第二半部分将它们全部抓取。

希望这对其他人有帮助