如果有一个数据库表名可使用此数据
Client|Task |Status
A |Clean office |Done
A |Paint the wall|Issue
A |Read mail |Done
B |Fix PC |Done
B |Buy Parts |Done
Run Code Online (Sandbox Code Playgroud)
我的查询是
SELECT * FROM `WORK` where Status = "Done"
Run Code Online (Sandbox Code Playgroud)
我只想显示已完成的任务,但如果客户的记录不是“状态 = 完成”,我不想获取他的任何记录(即使是那些已完成状态的记录)而且我只会得到两个客户 B记录,因为他们都完成了。
您可以为此使用 NOT IN() 函数:
SELECT * FROM `Work` t
WHERE t.Client NOT IN(SELECT distinct s.Client FROM `Work` s
WHERE s.status <> 'Done')
Run Code Online (Sandbox Code Playgroud)
这样您就可以只选择那些只有“完成”状态的项目。
您还可以使用 LEFT JOIN 来做到这一点,如下所示:
SELECT * FROM `work` t
LEFT JOIN(SELECT * from `work` where status <> 'Done') s
ON(t.Client = s.Client)
WHERE s.Client is null
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1223 次 |
| 最近记录: |