在外部值和选择内部值之间具有DATEDIFF的GROUP_CONCAT返回多于1行

时间:2017-11-23 00:25:08

标签: mysql-5.7

所以我有一个User和Child表,这个想法是连接用户的加入日期和孩子的dob之间的日期差异。

当我使用此

运行group_concat时,特定用户有2个孩子
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;

这会给出一个子查询返回超过1行的错误。好吧,我在subselect中运行了一个c2.user_id组,但这违背了group_concat的目的!我刚刚得到了第一个孩子id datediff。

1 个答案:

答案 0 :(得分:0)

好吧所以我已经回答了我自己的问题,在午餐后想了一些,这就是我解决它的方法:

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表中取出单独的dob而不是在子选择内的DATEDIFF的下半部分抓取它们。

希望这有助于其他人