2016-11-20 27 views
1

我有以下sql語句,我想從用戶表中獲取數據,其中用戶標識不在另一個column_one和column_two表中。爲什麼SQL NOT IN()運算符不工作?

我不知道爲什麼這條語句返回一個錯誤:

這MariaDB的版本尚不支持 'LIMIT & IN/ALL/ANY/SOME子查詢'

這個錯誤我

所以取消該限制的語句,現在它說:

操作數應包含1列(S)

我可以見S QL希望我在子查詢中只選擇一列,但這不是我想要的。

如何讓它工作避免所有這些錯誤,並返回一個有效的SQL語句與我的過濾?

這是SQL代碼,我想:

SELECT u.username, u.firstname, u.lastname,u.id,u.school 
     FROM users u 
      WHERE u.id NOT IN(
       SELECT user_two,user_one FROM friends 
        WHERE user_one !='8' 
         OR user_two !='8' 
      ) 
+2

將其更改爲AND user_two –

+0

它的工作!...但我需要解釋....我已經使用了和過濾,但不喜歡這樣。你可以解釋嗎? – lernyoung

回答

0

按道理你有一個asimmetric使用IN操作符

的條款必須包含相同數量的組件兩個部分

您應該使用

SELECT u.username, u.firstname, u.lastname,u.id,u.school 
    FROM users u 
     WHERE u.id NOT IN( 
      SELECT id FROM friends 
       WHERE user_one !='8' 
        OR user_two !='8' 
     ) 

SELECT u.username, u.firstname, u.lastname,u.id,u.school 
    FROM users u 
     WHERE (u.id1, u.id2) NOT IN( 
      SELECT user_two,user_one FROM friends 
       WHERE user_one !='8' 
        OR user_two !='8' 
     ) 

或結果impredictable