我有一个非常简单的问题,我无法解决。我需要这样做:
select distinct * from (1, 1, 1, 2, 5, 1, 6).
谁都能帮忙??
编辑
数据以文本文件的形式来自我们的一个客户。它是完全没有格式的(它是一个很长的文本行),但在Excel中可以这样做。但这对我来说并不实际,因为我需要在sql查询中使用这些值。每次需要运行查询时这样做并不方便。
我有一个非常简单的问题,我无法解决。我需要这样做:
select distinct * from (1, 1, 1, 2, 5, 1, 6).
谁都能帮忙??
编辑
数据以文本文件的形式来自我们的一个客户。它是完全没有格式的(它是一个很长的文本行),但在Excel中可以这样做。但这对我来说并不实际,因为我需要在sql查询中使用这些值。每次需要运行查询时这样做并不方便。
当前回答
对我来说行之有效的一种技术是查询一个您知道其中有大量记录的表,其中只包括结果中的Row_Number字段
Select Top 10000 Row_Number() OVER (Order by fieldintable) As 'recnum' From largetable
将返回从1到10000条记录的结果集,在另一个查询中使用这个来给你想要的结果
其他回答
我在大多数SQL DB上创建了一个函数来实现这一点。
CREATE OR ALTER FUNCTION [dbo].[UTIL_SplitList](@parList Varchar(MAX),@splitChar Varchar(1)=',')
Returns @t table (Column_Value varchar(MAX))
as
Begin
Declare @pos integer
set @pos = CharIndex(@splitChar, @parList)
while @pos > 0
Begin
Insert Into @t (Column_Value) VALUES (Left(@parList, @pos-1))
set @parList = Right(@parList, Len(@parList) - @pos)
set @pos = CharIndex(@splitChar, @parList)
End
Insert Into @t (Column_Value) VALUES (@parList)
Return
End
一旦函数存在,它就非常简单
SELECT DISTINCT
*
FROM
[dbo].[UTIL_SplitList]('1,1,1,2,5,1,6',',')
使用SQL In函数
就像这样:
SELECT * FROM mytable WHERE:
"VALUE" In (1,2,3,7,90,500)
在ArcGIS中工作
对我来说行之有效的一种技术是查询一个您知道其中有大量记录的表,其中只包括结果中的Row_Number字段
Select Top 10000 Row_Number() OVER (Order by fieldintable) As 'recnum' From largetable
将返回从1到10000条记录的结果集,在另一个查询中使用这个来给你想要的结果
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)
总的来说:
SELECT
DISTINCT
FieldName1, FieldName2, ..., FieldNameN
FROM
(
Values
( ValueForField1, ValueForField2,..., ValueForFieldN ),
( ValueForField1, ValueForField2,..., ValueForFieldN ),
( ValueForField1, ValueForField2,..., ValueForFieldN ),
( ValueForField1, ValueForField2,..., ValueForFieldN ),
( ValueForField1, ValueForField2,..., ValueForFieldN )
) AS TempTableName ( FieldName1, FieldName2, ..., FieldNameN )
在你的情况下:
Select
distinct
TempTableName.Field1
From
(
VALUES
(1),
(1),
(1),
(2),
(5),
(1),
(6)
) AS TempTableName (Field1)