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;