2011-05-11 123 views
1

我在SQL Server中使用where in條件。我想要得到的結果沒有秩序,因爲我列出了'在哪裏'的情況。SQL Server:無命令選擇

例如

select * from blabla where column in ('03.01.KO61.01410', 
'03.02.A081.15002', 
'03.02.A081.15016', 
'03.02.A081.15003', 
'02.03.A081.57105') 

我該怎麼辦?

+1

您的查詢看起來OK。有什麼問題? – 2011-05-11 09:35:00

+0

結果應該按照我的情況提到的順序 – esquare 2011-05-11 09:40:49

回答

1

由於我的經驗,SQL Server會隨機排序結果爲WHERE,按照條款,如果你沒有規定如何訂購它。

所以,如果你想通過你的WHERE-IN條件來定購,你必須定義一些數據項來在你通過時對它進行排序。否則,SQL Server將隨機地對您的結果集進行排序。

2

您已經在使用它 - 如果您沒有使用ORDER BY明確指定訂單,則沒有默認訂單。

如果你想完全隨機的輸出,你可以一個ORDER BY NEWID()子句添加:

SELECT (list of columns) 
FROM dbo.blabla 
WHERE column IN ('03.01.KO61.01410', '03.02.A081.15002', 
        '03.02.A081.15016', '03.02.A081.15003', '02.03.A081.57105') 
ORDER BY NEWID() 
+0

不,我不希望sql排序。因爲我在哪裏發表了條件清單。它應該作爲在哪裏。但是SQL根據ASC自動命令它。明白我? – esquare 2011-05-11 09:36:42

+2

除非使用order by,否則RDBMS返回的結果順序未定義。如果在數據,索引等方面沒有任何變化,則可能在相同的時間內以相同的順序從相同的查詢中接收結果。然後有一天,一些變化(數據添加,刪除或更新,索引添加/刪除,數據文件遷移到不同的磁盤等),訂單將改變。您在結果集中看到的順序本質上是「無序的」,只要有一天它會不同。看看marc_s的'newid()'順序 - 它接近於隨機順序。 – Karl 2011-05-11 09:43:04

0

如果您的表中有一個自動增量id,請在訂單子句中使用它。如果你不這樣做,請考慮添加一個...

4

如果你想讓返回的行與你IN中的項目順序相同,你需要找到一些方法來指定在ORDER BY子句 - 獲取SQL Server定義訂單的唯一方法。例如: -

select * from blabla where column in ('03.01.KO61.01410', 
'03.02.A081.15002', 
'03.02.A081.15016', 
'03.02.A081.15003', 
'02.03.A081.57105') 
order by 
CASE column 
when '03.01.KO61.01410' then 1 
when '03.02.A081.15002' then 2 
when '03.02.A081.15016' then 3 
when '03.02.A081.15003' then 4 
when '02.03.A081.57105' then 5 
end 
0

試試這個:從http://www.sommarskog.se/arrays-in-sql-2008.html

CREATE TYPE varchar20_list_type AS TABLE (
    id INT IDENTITY PRIMARY KEY, 
    val VARCHAR(20) NOT NULL UNIQUE 
) 

DECLARE @mylist varchar20_list_type 
INSERT @mylist (val) VALUES 
    ('03.01.KO61.01410'), 
    ('03.02.A081.15002'), 
    ('03.02.A081.15016'), 
    ('03.02.A081.15003'), 
    ('02.03.A081.57105') 

SELECT 
    * 
FROM 
    blabla 
    JOIN @mylist AS t 
    ON 
     blabla.col = t.val 
ORDER BY 
    t.id 

更多信息順便說一句,這可以很容易地在PostgreSQL中實現與價值觀:http://www.postgresql.org/docs/9.0/static/queries-values.html