あるカラムの値が同じで、idが連続していないレコードの抽出について


以下のようなusersテーブルがあるとします。

id | name  
---|---  
1 | Alice  
2 | Bob  
3 | Bob  
4 | Carol  
5 | Carol  
6 | Alice  
7 | Dave  
  
このテーブルからnameが同じで、idが連続していないレコードを抽出したいです。  
期待する結果は以下の通りです。

id | name  
---|---  
1 | Alice  
6 | Alice  
  
そのためのクエリや、考え方をご教示いただけますと幸いです。




「idが連続していないレコードを抽出したい」をより具体的に表現を改めればわかります。  
つまり、「あるレコードに対して、nameは一致しid+1となるレコードが存在しない、かつnameは一致しid-1となるレコードが存在しない」が抽出条件なはずです。  
そのまま素直にSQLとして記述すれば（テーブル名を`t`とします）、

[code]

    SELECT id, name
    FROM t as t0
    WHERE
      -- nameは一致しid+1となるレコードが存在しない
      NOT EXISTS(SELECT * FROM t as t1 WHERE t0.id + 1 = t1.id AND t0.name = t1.name)
    AND 
      -- nameは一致しid-1となるレコードが存在しない
      NOT EXISTS(SELECT * FROM t as t2 WHERE t0.id - 1 = t2.id AND t0.name = t2.name)
    
[/code]

もう少し効率をよくするなら

[code]

    SELECT id, name
    FROM t as t0
    WHERE NOT EXISTS(
        SELECT *
        FROM t as t1
        WHERE (t0.id + 1 = t1.id OR t0.id - 1 = t1.id) AND t0.name = t1.name
    )
    
[/code]

