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

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

谁都能帮忙??

编辑

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


当前回答

如果您只想从单个表中选择某些值,您可以尝试这样做

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 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',',') 

如果你需要一个数组,用逗号分隔数组列:

SELECT * FROM (VALUES('WOMENS'),('MENS'),('CHILDRENS')) as X([Attribute])
,(VALUES(742),(318)) AS z([StoreID])

使用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条记录的结果集,在另一个查询中使用这个来给你想要的结果

总的来说:

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)