如何从表中选择数据,从第二个表Mysql中排除数据?

时间:2014-10-22 12:19:21

标签: mysql sql

日志,其中 LogId 字段 PK 。 还有表用户日志,其中包含以下字段:userlogStatususerlogIdLog

两个表的关系是:Log.LogId = userlog.userlogIdLog

如果有Log,如何选择表格userlog,中的行(userlogStatus = 1除外)? 表达式userlogStatus = 1表示已阅读Log的消息。

3 个答案:

答案 0 :(得分:1)

尝试以下

 SELECT * from LOG
 inner join userlog on Log.LogId = userlog.userlogIdLog
 where userlogStatus <> 1

答案 1 :(得分:1)

您可以使用not exists

select l.*
from log l
where not exists (select 1 from userlog ul where l.LogId = ul.userlogIdLog and userLogStatus = 1);

为了获得最佳效果,您需要userlog(userlogIdLog, userLogStatus)上的索引。

答案 2 :(得分:1)

SELECT l.*
FROM Log l
LEFT JOIN userlog Log.LogId = userlog.userlogIdLog
WHERE userlogStatus is null or userlogStatus <> 1