我有一个非常简单的问题,我无法解决。我需要这样做:

select distinct * from (1, 1, 1, 2, 5, 1, 6).

谁都能帮忙??

编辑

数据以文本文件的形式来自我们的一个客户。它是完全没有格式的(它是一个很长的文本行),但在Excel中可以这样做。但这对我来说并不实际,因为我需要在sql查询中使用这些值。每次需要运行查询时这样做并不方便。


当前回答

我知道这是一个相当老的线程,但我正在寻找类似的东西,然后想到了这个。

假设您有一个逗号分隔的字符串,您可以使用string_split

select distinct value from string_split('1, 1, 1, 2, 5, 1, 6',',')

这应该会返回

1
2
5
6

字符串分割接受两个参数,字符串输入和分隔符。

您可以添加一个可选的where语句,使用value作为列名

select distinct value from string_split('1, 1, 1, 2, 5, 1, 6',',')
where value > 1

生产

2
5
6

其他回答

您尝试过使用下面的语法吗?

select * from (values (1), (2), (3), (4), (5)) numbers(number)

使用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);

如果它是一个来自现有SQL表的参数列表,例如来自现有Table1的ID列表,那么你可以尝试这样做:

select distinct ID
      FROM Table1
      where 
      ID in (1, 1, 1, 2, 5, 1, 6)
ORDER BY ID;

或者,如果你需要参数列表作为一个SQL表常量(变量),试试这个:

WITH Id_list AS (
     select ID
      FROM Table1
      where 
      ID in (1, 1, 1, 2, 5, 1, 6)
)
SELECT distinct * FROM Id_list
ORDER BY ID;