Mysql 在同一个表中使用JOIN和COUNT

Mysql 在同一个表中使用JOIN和COUNT,mysql,sql,join,count,Mysql,Sql,Join,Count,我有这张桌子 跟踪 身份证 推荐人 地位 会议 我想计算两个表的行数(与自身连接) 根据这些数据: id | referer | status | session 1 | http://google.com | 1 | ABC 2 | ################# | 2 | ABC 我需要得到(1,1),但我得到(1,null) 我尝试了右连接,但也不起作用。使用左连接而不是内部连接: t1是“左”表,t2是“右”表。您想使用LEFT JOIN确保从左表(t1)获取所有行,而不

我有这张桌子

跟踪

  • 身份证
  • 推荐人
  • 地位
  • 会议
我想计算两个表的行数(与自身连接)

根据这些数据:

id | referer | status | session

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

2 | ################# | 2 | ABC
我需要得到(1,1),但我得到(1,null)


我尝试了右连接,但也不起作用。

使用
左连接
而不是
内部连接


t1
是“左”表,
t2
是“右”表。您想使用
LEFT JOIN
确保从左表(
t1
)获取所有行,而不管右表(
t2
)中是否有匹配项。

尝试使用
LEFT OUTER JOIN
。为我返回1,1。我在您的sql FIDLE(3,,,1,,,CBA)中添加了一个新记录,它仍然返回1,1,应该是2,1(我的初始问题需要更新)。您想要实现什么?此代码应该执行的任务是什么
internaljoin
可能无法返回不同的计数,因为您正在过滤掉任何可能的
NULL
s,因此两个字段的每一行都会被计数。
id | referer | status | session

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

2 | ################# | 2 | ABC
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;