gpt4 book ai didi

mysql - 当我在查询中使用 COUNT 时,左连接不会返回第二个表(右)中没有 corrispandednt 的行

转载 作者:行者123 更新时间:2023-11-29 08:25:38 25 4
gpt4 key购买 nike

此查询返回 2 行

SELECT `users`. * , `user_bets` . *
FROM `users`
LEFT JOIN `user_bets` ON `user_bets`.`user_id` = `users`.`id`

此返回 1 行(其中一个用户在 user_bets 表中没有任何行。

SELECT users. * , count(user_bets.id) as bets
FROM `users`
LEFT JOIN `user_bets` ON `user_bets`.`user_id` = `users`.`id`

但我认为它会以任何方式返回他,因为它是左连接?他的赌注是 0 ?如果没有,有什么方法可以通过 join 将两行都设为 0 作为第二行的下注?或者应该在 2 个查询中打破它?

最佳答案

COUNT() 是一个计算非 NULL 值的聚合函数。

参见http://dev.mysql.com/doc/refman/5.1/en/counting-rows.html

<小时/>

由于您没有 GROUP BY 子句,因此使用像 COUNT() 这样的聚合函数可能不是您想要的。

您应该添加缺少的 GROUP BY 子句:

SELECT users. * , COUNT(user_bets.id) as bets
FROM `users`
LEFT JOIN `user_bets` ON `user_bets`.`user_id` = `users`.`id`
GROUP BY `users`.`id`

或者也许使用IF(...):

SELECT users. * , IF(user_bets.id IS NOT NULL, 1, 0) as bets
FROM `users`
LEFT JOIN `user_bets` ON `user_bets`.`user_id` = `users`.`id`

参见http://sqlfiddle.com/#!2/08a52/3进行实验。

关于mysql - 当我在查询中使用 COUNT 时,左连接不会返回第二个表(右)中没有 corrispandednt 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18026062/

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