在同一个表和COUNT中使用JOIN

时间:2013-11-14 02:11:33

标签: mysql sql join count

我有这张桌子

跟踪

  • ID
  • 引用者
  • 状态
  • 会话

我想要为两个表(自己加入)的COUNT行

SELECT COUNT(t1.id), COUNT(t2.id)
FROM tracking t1
INNER JOIN tracking t2 on t2.session = t1.session AND t2.status = 2
WHERE t1.referer = 'http://google.com' AND t1.status = 1

有这些数据:

id | referer | status | session

1 | http://google.com | 1 | ABC

2 | ################# | 2 | ABC

我需要得到(1,1)但我得到(1,null)

我尝试使用RIGHT JOIN,但也没有工作。

1 个答案:

答案 0 :(得分:2)

使用LEFT JOIN代替INNER JOIN

Example

SELECT COUNT(t1.id), COUNT(t2.id)
FROM tracking t1
LEFT JOIN tracking t2 on t2.session = t1.session AND t2.status = 2
WHERE t1.referer = 'http://google.com' AND t1.status = 1;

t1是“左”表,t2是“右”表。您希望使用LEFT JOIN确保从左表(t1)获取所有行,无论右表(t2)中是否存在匹配项。