![](/img/trans.png)
[英]Mysql: Select data from one table where in table2 and values must all be 0 in table2
[英]Select from table excluding values from table2?
我嘗試進行查詢以從表log
獲取數據,但不包括表userlog
數據:
SELECT * FROM (`log`) LEFT JOIN `userlog` ON `userlog`.`userlogIdLog` = `log`.`LogId`
WHERE (logTypeCategory = 0 AND LogType = 1) OR (logTypeCategory = 19 AND LogType = 1)
OR (logTypeCategory = 0 AND LogType = 4) OR (logTypeCategory = 0 AND LogType = 8)
OR (logTypeCategory = 0 AND LogType = 12) OR (logTypeCategory = 2 AND LogType = 3)
OR (logTypeCategory = 0 AND LogType = 7) OR (logTypeCategory = 459 AND LogType = 9)
OR (logTypeCategory = 456 AND LogType = 3)
AND `userlogStatus` is null or userlogStatus <> 1
AND `userlog`.`userlogIdUser` = '458' ORDER BY `LogId` DESC
但是此查詢向我顯示了log
中的行,盡管表userlog
存在以下行: userlogIdLog = 1 AND userlogStatus = 1 AND userlogIdUser = 458
我在您的幫助下進行編輯:
select * from `log` as a
where not exists ( select 1 from `userlog` as b where b.`userlogIdLog` = a.`LogId` AND b.`userlogIdUser` = 458 )
AND (logTypeCategory = 0 AND LogType = 1)
OR (logTypeCategory = 19 AND LogType = 1)
OR (logTypeCategory = 0 AND LogType = 4)
OR (logTypeCategory = 0 AND LogType = 8)
OR (logTypeCategory = 0 AND LogType = 12)
OR (logTypeCategory = 2 AND LogType = 3)
OR (logTypeCategory = 0 AND LogType = 7)
OR (logTypeCategory = 459 AND LogType = 9)
OR (logTypeCategory = 456 AND LogType = 3)
但這不正確
有幾種方法可以從一個表中選擇數據,而該數據不在另一表中:
例如
select *
from `log`
where `LogId` not in
(
select `userlogIdLog`
from `userlog`
)
要么
select *
from `log` as a
where not exists
(
select 1
from `userlog` as b
where b.`userlogIdLog` = a.`LogId`
)
...然后在選擇以上語句之后,添加其余的邏輯; 即
AND
(
(logTypeCategory = 0 AND LogType = 1)
OR (logTypeCategory = 19 AND LogType = 1)
OR (logTypeCategory = 0 AND LogType = 4)
OR (logTypeCategory = 0 AND LogType = 8)
OR (logTypeCategory = 0 AND LogType = 12)
OR (logTypeCategory = 2 AND LogType = 3)
OR (logTypeCategory = 0 AND LogType = 7)
OR (logTypeCategory = 459 AND LogType = 9)
OR (logTypeCategory = 456 AND LogType = 3)
)
select L.col1,L.col2,L.col3 From Log L Left Outer Join userlog UL on L.LogId = UL.userlogIdLog where UL.userlogIdLog is NULL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.