所以我有一个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。
答案 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的下半部分抓取它们。
希望这有助于其他人