簡體   English   中英

當我在查詢中使用COUNT時,左連接不返回第二個表(右)中沒有corrispandednt的行

[英]left join doesn't return the rows without corrispandednt in the second table(right) when i use COUNT in the query

此查詢返回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是他的賭注? 如果沒有,有沒有辦法讓兩個行都為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進行實驗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM