2013-02-05 63 views
-2

我有一個MySQL查詢看起來是這樣的:如何更正此查詢?

SELECT column1_value, column2_value 
    FROM some_table 
WHERE column2_value IN (a,lot,of,comma,separated,values) 
    AND column1_value NOT IN (SELECT column1_value, 
            column3_value 
           FROM some_table 
           WHERE column3_value = some_number) 
ORDER BY something DESC 
LIMIT 4 

,但我不斷收到錯誤,有什麼不好?

我不能做,然後不在?

在此先感謝

+4

那麼*什麼*錯誤? – Arran

回答

1

問題是這樣的線

AND column1_value NOT IN (SELECT column1_value, 
           column3_value 
          FROM some_table 
          WHERE column3_value = some_number) 

通知內子查詢?

SELECT column1_value, column3_value 
FROM some_table 
WHERE column3_value = some_number 

您正在返回數據集中的兩列!它應該只是

SELECT column1_value 
FROM some_table 
WHERE column3_value = some_number 

或者任何(單!)你想測試對列。

0

我認爲你不能在第二次查詢,選擇多列。

1

錯誤是在這部分

NOT IN (SELECT column1_value, column3_value 
     FROM some_table 
     WHERE column3_value = some_number) 

,你可以看到你從你的子查詢返回多個列。當從子查詢中獲取值時,它應該只返回ONE列。

嘗試使用LEFT JOIN

SELECT column1_value, column2_value 
    FROM some_table 
     LEFT JOIN 
     (
      SELECT column1_value, column3_value 
      FROM some_table 
      WHERE column3_value = some_number 
     ) x ON sometable.column1_value = x.column1_value 
WHERE column2_value IN (a,lot,of,comma,separated,values) AND 
     x.colName IS NULL 
ORDER BY something DESC 
LIMIT 4 
0

在部分:

(SELECT column1_value, column3_value FROM some_table WHERE column3_value = some_number) 

你有一個以上的價值選擇,其值的三元組。