簡體   English   中英

其中Column1或Column2等於值

[英]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

如果您將andor混合使用,則可能總是想使用括號。

逗號聯接語法也是某種“骯臟的”,也許您想通過以下方式編寫查詢,而不是更清楚地了解聯接的一部分和約束的一部分:

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.

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