【发布时间】:2010-09-21 04:20:10
【问题描述】:
我有一个表,其中有一个 id 列(唯一的、主要的)、一个名称(不是唯一的——事实上,很可能是重复的)和一个值为 0、1 或 2 的标志列。假设我重新排序使用命令的表
SELECT id, name, flag ORDER BY name, id
我想使用 SQL 生成一个名称列表,其中,当向下读取重新排序中的行时,有两个相邻的行具有相同的名称和值 0 和 1 的标志(按该顺序)。此外,在该列表中,我想知道发生这种情况的两行的 ID。如果发生不止一次,应该有多行。
所以,例如,在下面
id name flag
4 Bob 0
5 Bob 2
6 Bob 1
1 Cathy 0
7 Cathy 1
3 David 0
2 Elvis 2
8 Elvis 0
9 Elvis 1
我想选择
name id1 id2
Cathy 1 7
Elvis 8 9
我该怎么做?
我正在使用 MySQL。
编辑:请注意,这些相邻行的 ID 可能不连续;如果我们按名称订购,它们只是连续的。例如,参见 Cathy。
谢谢!
【问题讨论】: