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

我在这里做错了什么?为什么我的第二个查询中的顺序颠倒了?

4

1 回答 1

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
于 2013-04-10T19:50:57.620 回答