2013-01-24 42 views
-5

我做“中选择”包含项目列表重复

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

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

+3

你是什么让他们意味着什么?即使不包含重复项,它也会将它们全部返回。 –

+0

您正在使用哪种RDBMS? –

+0

@HamletHakobyan标题T-SQL建议SQL Server或Sybase –

回答

3

该查询不排除重复,只是没有任何重复排除。表中只有一个记录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 
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 
相关问题