我有两个表:用户和工作
我需要写选择查询 从用户表中计算不同的名称,其中work_status = 1来自工作表
总数:3 John,1 Tom
我需要得到结果:
John 2( 2,因为一个John work_status = 0 ant,这不计算)
汤姆1
我编写了可以计算不同名称的select,只需要比较work_status ..
SELECT name,COUNT(*) as num FROM users GROUP BY name
我的查询返回:
答案 0 :(得分:2)
您的问题存在问题。所以这里有两个解决方案。
如果有三个不同的John在公司工作,这是您的查询
SELECT u.name, COUNT(*) as num
FROM users u INNER JOIN works w ON w.user_id = u.id
WHERE w.work_status = 1
GROUP BY u.name, u.id
如果公司中只有一名John在工作,那么您的查询是这样的:
SELECT u.name, COUNT(*) as num
FROM users u INNER JOIN works w ON w.user_id = u.id
WHERE w.work_status = 1
GROUP BY u.name
注意:如果三个John是同一个人,则应删除最后一个,并works
表更改user_id = 3
和user_id = 4
user_id = 1
< / em>
答案 1 :(得分:1)
这个应该做的工作:
SELECT users.name,SUM(works.work_status) as num
FROM users,works
WHERE users.id=works.id
GROUP BY name
答案 2 :(得分:1)
这是一个简单的JOIN查询:
SELECT u.name, COUNT(*) num
FROM users u
JOIN works w
ON w.user_id = u.id
AND w.work_status = 1
GROUP BY u.name
答案 3 :(得分:1)
SELECT
users.`name`,
COUNT(*) num
FROM
users,
works
WHERE users.`id` = works.`user_id`
AND works.`work_status` = 1
GROUP BY users.`name` ;