我正在使用MySQL 5.6.23。在我的数据库中,我有两个表,tblFiles和tblLogs。表tblFiles包含一个ID(PK),文件的路径和文件名(均为VARCHAR)。

表tblLogs包含一个ID(PK),一个指向tblFiles中条目的referenceID(FK)和一个actionCode(0、1或2)。

tblFiles中的条目可能类似于:

1 | c:\root\files | test1.txt
2 | c:\root\files | test2.txt
3 | c:\root\files | test3.txt


tblFiles中的条目可能看起来像

1 | 1 | 0
2 | 1 | 1
3 | 2 | 0
4 | 3 | 2


我需要获取tblLogs中只有actionCode 0的所有文件的路径和文件名(从tblFiles)。对于上面的示例,查询应返回:

c:\root\files | test2.txt


如果您觉得这个问题很奇怪,那是因为这是我的任务之一。现在,我试图弄清楚如何仅使用actionCode 0获得条目(即仅获得将返回给我referenceID 2的查询)。我已经尝试过不同的查询,例如:

SELECT referenceID FROM tblLogs WHERE actionCode = 0 AND (actionCode != 1 OR actionCode != 2);


我什至不知道这样的查询是否可行……如果你们能帮助我,我将不胜感激!

最佳答案

这是使用maxmin的一种方法:

select f.loc, f.name
from tblFiles f
  join tblLogs l on f.id = l.referenceid
group by f.loc, f.name
having max(l.actioncode) = 0 and min(l.actioncode) = 0



SQL Fiddle Demo

关于mysql - SQL条件语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29360205/

10-13 22:21