簡體   English   中英

從表中選擇,但不包括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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM