如何在MySQL中选择非连续行?

5

如果记录的主键是1,3,4,5,6,8

我想选择具有pk的记录:1,6

注意

我不知道哪些id是非连续的

5个回答

7
SELECT *
FROM your_table AS a
    LEFT JOIN your_table AS b
        ON a.key_column = b.key_column - 1
WHERE b.key_column IS NULL

2
像这样的东西怎么样?
SELECT
    *
FROM
    [MyTable]
WHERE
    [MyId] NOT IN
(
    SELECT
        [MyId] - 1
    FROM
        [MyTable]
)

1
为什么不在你的SQL查询中使用where子句?
select *
from your_table
where id in (1, 6)

1

请记住,在您选择的数据库中,行通常不是“连续的”,除非您明确地对它们进行排序。如果您没有指定排序方式,它们通常会以正确的顺序出现。


0
Robin Day提出的解决方案有所改进。
SELECT
    [MyId] + 1
FROM
    [MyTable]
WHERE
    [MyId] NOT IN
(
    SELECT
        [MyId] - 1
    FROM
        [MyTable]
)
ORDER BY [MyId] + 1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接