簡體   English   中英

單個查詢中的兩個FIND_IN_SET無效

[英]Two FIND_IN_SET in a single query is not working

下面是表格結構(邀請表): -

id   user_id   doc_name        discussion_topic     invited_friends  accepted_invitation 

1     1        IEP Form-1.docx   first topic        2,3,4             NULL

現在:

當我查詢時: -

SELECT * from invite WHERE  (FIND_IN_SET(2,invited_friends) > 0)

我完美地記錄了這個記錄(如上所示)。

但是當我這樣做時:

SELECT * from invite WHERE  (FIND_IN_SET(2,invited_friends) > 0) AND (FIND_IN_SET(2,accepted_invitation) =0)

我沒有得到上述記錄,也沒有任何錯誤。

當我這樣做時:

SELECT * from invite WHERE user_id <>1 AND (FIND_IN_SET(2,invited_friends) > 0) AND (FIND_IN_SET(2,accepted_invitation) =0)

我再次沒有得到上述記錄,也沒有任何錯誤。

其實我有場景檢查一個給定的編號(例如2)不等於user_id ,並且必須invite_friends (不能為空),而不是在accepted_invitationaccepted_invitation將是null或者,分隔ID值)。

我在最后兩次查詢中犯了什么錯誤?

注意:我在phpmyadmin直接使用這些查詢

你應該用它

將'= 0'替換為'is null'

SELECT * from invite WHERE  (FIND_IN_SET(2,invited_friends) > 0) AND (FIND_IN_SET(2,accepted_invitation) is null )

使用IFNULL作為列名:

SELECT * 
FROM   invite 
WHERE  user_id <> 1 AND
      (FIND_IN_SET(2, IFNULL(invited_friends, 0)) > 0)  AND 
      (FIND_IN_SET(2, IFNULL(accepted_invitation, 0)) = 0);

檢查SQL小提琴: http ://sqlfiddle.com/#!9/98d95 / 9

檢查您的場景使用情況

SELECT * from invite WHERE user_id <>2// check user ID not equal to 2
AND (FIND_IN_SET(2, invited_friends) > 0)// 2 present in invited_friends
AND ((FIND_IN_SET(2, accepted_invitation) = 0)|| (FIND_IN_SET(2, accepted_invitation) IS NULL))// check 2 is null and not present in accepted_invitation

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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