我有一个非常简单的问题,我无法解决。我需要这样做:
select distinct * from (1, 1, 1, 2, 5, 1, 6).
谁都能帮忙??
编辑
数据以文本文件的形式来自我们的一个客户。它是完全没有格式的(它是一个很长的文本行),但在Excel中可以这样做。但这对我来说并不实际,因为我需要在sql查询中使用这些值。每次需要运行查询时这样做并不方便。
我有一个非常简单的问题,我无法解决。我需要这样做:
select distinct * from (1, 1, 1, 2, 5, 1, 6).
谁都能帮忙??
编辑
数据以文本文件的形式来自我们的一个客户。它是完全没有格式的(它是一个很长的文本行),但在Excel中可以这样做。但这对我来说并不实际,因为我需要在sql查询中使用这些值。每次需要运行查询时这样做并不方便。
当前回答
您尝试过使用下面的语法吗?
select * from (values (1), (2), (3), (4), (5)) numbers(number)
其他回答
这适用于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)
使用GROUP BY可以提供比DISTINCT更好的性能:
SELECT *
FROM
(
VALUES
(1),
(1),
(1),
(2),
(5),
(1),
(6)
) AS A (nums)
GROUP BY A.nums;
使用SQL In函数
就像这样:
SELECT * FROM mytable WHERE:
"VALUE" In (1,2,3,7,90,500)
在ArcGIS中工作
从用户id列表中选择用户id: SELECT * FROM my_table WHERE user_id IN (1,3,5,7,9,4);
PostgreSQL提供了两种方法:
SELECT DISTINCT * FROM (VALUES('a'),('b'),('a'),('v')) AS tbl(col1)
or
SELECT DISTINCT * FROM (select unnest(array['a','b', 'a','v'])) AS tbl(col1)
使用数组方法,你也可以这样做:
SELECT DISTINCT * FROM (select unnest(string_to_array('a;b;c;d;e;f;a;b;d', ';'))) AS tbl(col1)