如何显示一个表中的所有记录,即使它们与JOIN不匹配WHERE子句

时间:2013-02-25 23:32:34

标签: mysql join count

我试图实现的咨询有问题:

SELECT [columns] FROM table1 LEFT/RIGHT JOIN table2 ON table1.id_user = table2.id  [WHERE clause] GROUP BY column

我想要这个咨询的例子如下所示:

在table1中记录此记录:

  

id | id_user |用户|值

     

1 | 1 | name1 | 10

     

2 | 1 | name1 | 10

     

3 | 1 | name1 | 11

     

4 | 1 | name1 | 10

     

5 | 2 | name2 | 11

     

6 | 2 | name2 | 11

表2中的这些:

  

id |用户

     

1 | name1

     

2 | NAME2

我想获得给定值的每个用户存在多少记录,例如,如果我们寻找值10我想得到的值:

  

name1 | 3

     

name2 | 0

我尝试过LEFT和RIGHT JOIN但是没有用,我只是得到这个,因为我猜的唯一记录匹配WHERE子句:

  

name1 | 3

而不是name2的结果。

在我解决问题之前,我一直没有找到解决方案,希望有人可以帮我解决这个问题:)

抱歉英文不好。 我非常感谢您提供的任何帮助

1 个答案:

答案 0 :(得分:0)

试试这个。

SELECT t2.user,SUM(CASE WHEN t2.id=t1.id_user THEN 1 ELSE 0 END) AS TotalRecords 
FROM table2 t2
LEFT JOIN table1 t1 ON t2.id =t1.id_user
GROUP BY t2.id 
HAVING t1.value=10