MySQL组合2选择

时间:2015-03-17 12:51:44

标签: mysql


---编辑澄清---

TABLE tb1
id       somevalue
1        999
2        999
3        999
4        998

TABLE tb2
tb1_id      other_irrelevant_fields
3           ...
3           ...
3           ...

我想在一个查询中获取tb1的字段,其中somevalue = 999,而tb2的COUNT(*)其中tb1_id = tb1.id。

基本上将这2个查询加入1:

 1. SELECT * FROM tb1 WHERE somevalue = 999
 foreach row selected:
     2. SELECT COUNT(*) from tb2 WHERE tb1_id = <id of tb1>

RESULT
id    somevalue    COUNT(*)
1        999       0
2        999       0
3        999       3

2 个答案:

答案 0 :(得分:2)

如果你想要表1中的所有记录而不管表2中是否匹配,你需要使用LEFT-JOIN ...并且计数应该基于在第二个表中查找记录。

select 
      tb1.id,
      tb1.somevalue,
      count( tb2.tb1_id ) as Tbl2Records
   from
      tb1
         LEFT JOIN tb2
            on tb1.id = tb2.tb1_id
   where
      tb1.somevalue = 999
   group by
      tb1.id,
      tb1.somevalue

答案 1 :(得分:0)

SELECT tb1.*, count(tb2.*) 
FROM tb1
LEFT JOIN tb2
ON tb1.id=tb2.tb1_id
WHERE tb1.somevalue = 999
GROUP BY tb1.id