-4

我正在做

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

在这种情况下,“3”ID 是重复的。查询会自动排除重复的项目,而对我来说将它们全部获取很重要。有没有办法直接在 SQL 中做到这一点?

4

2 回答 2

3

该查询不排除重复项,只是没有要排除的重复项。表中只有一条 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
于 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 回答