-4

私がやっている

SELECT Name WHERE Id IN (3,4,5,3,7,8,9)

この場合、「3」ID が重複しています。クエリは重複したアイテムを自動的に除外しますが、私にとってはそれらをすべて取得することが重要です。SQLで直接それを行う方法はありますか?

4

2 に答える 2

3

クエリは重複を除外しません。除外する重複がないだけです。テーブルには id 3 のレコードが 1 つしかなく、セットに 3 があるため含まれますが、in ()セットに 3 が 2 回存在するため 2 回含まれません。

重複を取得するには、重複のあるテーブル結果を作成し、それに対してテーブルを結合する必要があります。例えば:

select t.Name
from someTable t
inner join (
  select id = 3 union all
  select 4 union all
  select 5 union all
  select 3 union all
  select 7 union all
  select 8 union all
  select 9
) x on x.id = t.id
于 2013-01-24T21:51:46.277 に答える
1

これを試して:

SELECT Name FROM Tbl 
    JOIN
     (
       SELECT 3 Id UNION ALL
       SELECT 4 Id UNION ALL
       SELECT 5 Id UNION ALL
       SELECT 3 Id UNION ALL
       SELECT 7 Id UNION ALL
       SELECT 8 Id UNION ALL
       SELECT 9 Id
     ) Tmp
     ON tbl.Id = Tmp.Id
于 2013-01-24T21:52:15.357 に答える