我有一个非常简单的问题,我无法解决。我需要这样做:
select distinct * from (1, 1, 1, 2, 5, 1, 6).
谁都能帮忙??
编辑
数据以文本文件的形式来自我们的一个客户。它是完全没有格式的(它是一个很长的文本行),但在Excel中可以这样做。但这对我来说并不实际,因为我需要在sql查询中使用这些值。每次需要运行查询时这样做并不方便。
我有一个非常简单的问题,我无法解决。我需要这样做:
select distinct * from (1, 1, 1, 2, 5, 1, 6).
谁都能帮忙??
编辑
数据以文本文件的形式来自我们的一个客户。它是完全没有格式的(它是一个很长的文本行),但在Excel中可以这样做。但这对我来说并不实际,因为我需要在sql查询中使用这些值。每次需要运行查询时这样做并不方便。
当前回答
这样的行构造函数只能在SQL Server 2008及以上版本上使用: 你可以用
SELECT DISTINCT *
FROM (
VALUES (1), (1), (1), (2), (5), (1), (6)
) AS X(a)
有关更多信息,请参阅:
官方的女士 http://www.sql-server-helper.com/sql-server-2008/row-value-constructor-as-derived-table.aspx
其他回答
这适用于SQL Server 2005,如果有最大数量:
SELECT *
FROM
(SELECT ROW_NUMBER() OVER(ORDER BY a.id) NUMBER
FROM syscomments a
CROSS JOIN syscomments b) c
WHERE c.NUMBER IN (1,4,6,7,9)
从用户id列表中选择用户id: SELECT * FROM my_table WHERE user_id IN (1,3,5,7,9,4);
如果您只想从单个表中选择某些值,您可以尝试这样做
select distinct(*) from table_name where table_field in (1,1,2,3,4,5)
eg:
select first_name,phone_number from telephone_list where district id in (1,2,5,7,8,9)
如果你想从多个表中选择,那么你必须选择UNION。
如果你只是想选择值1,1,1,2,5,1,6,那么你必须这样做
select 1
union select 1
union select 1
union select 2
union select 5
union select 1
union select 6
这样的行构造函数只能在SQL Server 2008及以上版本上使用: 你可以用
SELECT DISTINCT *
FROM (
VALUES (1), (1), (1), (2), (5), (1), (6)
) AS X(a)
有关更多信息,请参阅:
官方的女士 http://www.sql-server-helper.com/sql-server-2008/row-value-constructor-as-derived-table.aspx
您尝试过使用下面的语法吗?
select * from (values (1), (2), (3), (4), (5)) numbers(number)