我正在做
SELECT Name WHERE Id IN (3,4,5,3,7,8,9)
在这种情况下,“3”ID 是重复的。查询会自动排除重复的项目,而对我来说将它们全部获取很重要。有没有办法直接在 SQL 中做到这一点?
该查询不排除重复项,只是没有要排除的重复项。表中只有一条 id 为 3 的记录,因为集合中有一个 3 in ()
,所以它被包含在内,但由于集合中存在两次,所以它没有包含两次。
要获得重复项,您必须创建一个具有重复项的表结果,并根据该表加入表。例如:
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