[英]Where Column1 or Column2 equals value
我只是好奇我是否在正確執行此代碼-它似乎可以在我的測試服務器上正常工作,但是我很想將其發布,直到我知道我正確使用了OR語句。
SELECT privatemessages.threadID, privatemessages.messageID, privatemessages.message_body, privatemessages.uid
FROM privatemessages, privatethreads
WHERE privatemessages.threadID =1
AND privatethreads.threadID = privatemessages.threadID
AND privatethreads.to_user
OR privatethreads.from_user =1
LIMIT 0 , 30
不你不是。 而且不要使用隱式連接語法...
SELECT m.threadID
, m.messageID
, m.message_body
, m.uid
FROM privatemessages m
JOIN privatethreads t
ON t.threadID = m.threadID
WHERE m.threadID = 1
AND 1 IN (t.to_user,t.from_user)
LIMIT 0 , 30
第一步應該是添加括號:
SELECT privatemessages.threadID, privatemessages.messageID, privatemessages.message_body, privatemessages.uid
FROM privatemessages, privatethreads
WHERE privatemessages.threadID =1
AND privatethreads.threadID = privatemessages.threadID
AND (privatethreads.to_user
OR privatethreads.from_user =1)
LIMIT 0 , 30
如果您將and
和or
混合使用,則可能總是想使用括號。
逗號聯接語法也是某種“骯臟的”,也許您想通過以下方式編寫查詢,而不是更清楚地了解聯接的一部分和約束的一部分:
SELECT privatemessages.threadID, privatemessages.messageID, privatemessages.message_body, privatemessages.uid
FROM privatemessages
INNER JOIN privatethreads
ON privatethreads.threadID = privatemessages.threadID
WHERE privatemessages.threadID =1
AND (privatethreads.to_user
OR privatethreads.from_user =1)
LIMIT 0 , 30
不,您可以執行以下任一操作:
SELECT
privatemessages.threadID,
privatemessages.messageID,
privatemessages.message_body,
privatemessages.uid
FROM privatemessages, privatethreads
WHERE privatemessages.threadID =1
AND privatethreads.threadID = privatemessages.threadID
AND (privatethreads.to_user=1 OR privatethreads.from_user =1)
LIMIT 0 , 30
要么
SELECT
privatemessages.threadID,
privatemessages.messageID,
privatemessages.message_body,
privatemessages.uid
FROM privatemessages, privatethreads
WHERE privatemessages.threadID =1
AND privatethreads.threadID = privatemessages.threadID
AND 1 IN (privatethreads.to_user, privatethreads.from_user)
LIMIT 0 , 30
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.