Sql ';在'中选择;包含重复项的项目列表

Sql ';在'中选择;包含重复项的项目列表,sql,tsql,select,Sql,Tsql,Select,我在做什么 SELECT Name WHERE Id IN (3,4,5,3,7,8,9) 在这种情况下,“3”Id是重复的。 查询会自动排除重复的项目,而对我来说,获取所有这些项目非常重要。 有没有一种直接在SQL中执行此操作的方法?查询不排除重复项,只是没有任何重复项要排除。表中只有一条id为3的记录,之所以包括它,是因为in()集中有一条3,但没有包括两次,因为3在集中存在两次 要获取重复项,您必须创建一个具有重复项的表结果,并根据该结果联接该表。例如: select t.Name fr

我在做什么

SELECT Name WHERE Id IN (3,4,5,3,7,8,9)
在这种情况下,“3”Id是重复的。 查询会自动排除重复的项目,而对我来说,获取所有这些项目非常重要。
有没有一种直接在SQL中执行此操作的方法?

查询不排除重复项,只是没有任何重复项要排除。表中只有一条id为3的记录,之所以包括它,是因为
in()
集中有一条3,但没有包括两次,因为3在集中存在两次

要获取重复项,您必须创建一个具有重复项的表结果,并根据该结果联接该表。例如:

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

你说把它们都弄到手是什么意思?即使排除了重复项,它也会返回所有的RDBMS。您使用的是哪种RDBMS?@HamletHakobyan标题T-SQL建议SQL Server或Sybase您可以将查询拆分为(3,4,5,7,8,9)并使用UNION all添加到(3)中吗?无法在注释中添加完整的SELECT语句-希望这有意义。如果不让我知道,我和杰夫在这件事上是一致的。执行计划中将忽略
in
子句中的重复值,但它应与
Id
等于任何值的所有记录相匹配,除非他在其
选择中明确添加
不同的
;当然,假设存在具有相同
名称
值的重复记录。这是在SQL Server中,并且非常确定其他所有数据库都是这样。现在还不清楚这里有什么问题。