2013-04-10 109 views
0

我有以下查詢它爲我提供了準確的結果:查詢結果不準確

SELECT t.id 
    FROM titles t 
ORDER BY t.id 

我的結果是:

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 

我的第二個查詢也爲我提供了準確的結果:

SELECT t.id 
FROM titles t 
    JOIN subscriptions s 
     ON t.id = s.title 
WHERE s.user=2 

結果:

10 
11 
14 

所以我試圖做的是接收所有從不會在第二個查詢顯示的第一個查詢的結果,所以我運行此:

SELECT t.id 
    FROM titles t 
ORDER BY t.id NOT IN 
(
SELECT t.id 
FROM titles t 
    JOIN subscriptions s 
     ON t.id = s.title 
WHERE s.user=2 
); 

但我的成績最終成爲這個:

14 
11 
10 
13 
12 
9 
8 
7 
6 
5 
4 
3 
2 
1 

我在做什麼錯在這裏?爲什麼訂單在我的第二個查詢中顛倒了?

+0

的順序不會逆轉。注意前3行:'14,11,10' – 2013-04-10 19:55:36

回答

5

NOT IN應該是WHERE條件的一部分,而不是ORDER BY聲明:

SELECT 
    t.id 
FROM 
    titles t 
WHERE 
    t.id NOT IN 
    (
     SELECT t.id 
     FROM titles t 
      JOIN subscriptions s 
       ON t.id = s.title 
     WHERE s.user=2 
    ) 
ORDER BY 
    t.id 
+0

哇,這是最快反應的記錄。謝謝! – JimRomeFan 2013-04-10 19:52:12

+2

條件可以簡化爲't.id NOT IN(SELECT s.title FROM subscriptions s WHERE s.user = 2)'假設's.title'是'NOT NULL' – 2013-04-10 19:54:20