私がやっている
SELECT Name WHERE Id IN (3,4,5,3,7,8,9)
この場合、「3」ID が重複しています。クエリは重複したアイテムを自動的に除外しますが、私にとってはそれらをすべて取得することが重要です。SQLで直接それを行う方法はありますか?
クエリは重複を除外しません。除外する重複がないだけです。テーブルには 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
これを試して:
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