我試圖讓下面的查詢,除了我想要的「柏林」,在列表的頂部出現SQL服務器 - 訂購情況
所以事實顯示由城市按字母順序排列的結果結果看起來像
- 柏林
- 阿爾及利亞
- 澳大利亞
- 斐濟
- 希臘
- ...
希望是有道理的,
我公司目前有以下...
SELECT CompanyName, City
FROM customers
ORDER BY case when City = 'Berlin' END
我試圖讓下面的查詢,除了我想要的「柏林」,在列表的頂部出現SQL服務器 - 訂購情況
所以事實顯示由城市按字母順序排列的結果結果看起來像
希望是有道理的,
我公司目前有以下...
SELECT CompanyName, City
FROM customers
ORDER BY case when City = 'Berlin' END
SELECT CompanyName, City
FROM customers
ORDER BY case when City = 'Berlin' then 1 else 999 END asc
試試像
SELECT CompanyName, City
FROM customers
ORDER BY case when City = 'Berlin' THEN 0 ELSE 1 END, City
SELECT CompanyName, City, CASE WHEN City = 'Berlin' THEN 0 ELSE 1 END AS Ordering
FROM customers
ORDER BY Ordering, City
+1符合SQL-92規則,即只有'SELECT'子句的列名應該用在'ORDER BY'子句中。我已選擇對缺少的AS'關鍵字即'AS Ordering'視而不見;) – onedaywhen 2010-09-09 09:17:15
好的。編輯答案 – 2010-09-09 11:42:57
由於空字符串第一次出現在任何字符串排序列表,所有其他結果正常排序。所以這完美的作品:
SELECT CompanyName, City
FROM customers
ORDER BY CASE WHEN City = 'Berlin' THEN '' ELSE City END
測試了:
CREATE TABLE customers (CompanyName VARCHAR(50), City VARCHAR(50))
INSERT INTO customers VALUES ('Customer1', 'Berlin')
INSERT INTO customers VALUES ('Customer2', 'Algeria')
INSERT INTO customers VALUES ('Customer3', 'Australia')
INSERT INTO customers VALUES ('Customer4', 'Fiji')
INSERT INTO customers VALUES ('Customer5', 'Greece')
SELECT CompanyName, City
FROM customers
ORDER BY CASE WHEN City = 'Berlin' THEN '' ELSE City END
-- OUPUT
-- Customer1 Berlin
-- Customer2 Algeria
-- Customer3 Australia
-- Customer4 Fiji
-- Customer5 Greece
有關使用聯盟如何?像這樣的東西,例如:
SELECT 1 as Weight, CompanyName, City FROM customers
WHERE city='Berlin'
UNION ALL
SELECT 2 as Weight, CompanyName, City FROM
customers
WHERE city<>'Berlin'
ORDER BY Weight, City
這是行不通的; ORDER BY適用於整個工會,並且您仍然將阿爾及利亞留在最上面。 – LittleBobbyTables 2010-09-08 11:29:16
感謝您的評論。但現在用括號表示它正常工作。我使用SQL tryit頁面來檢查 – 2010-09-08 11:43:39
對不起,不,這是錯的,我的錯誤。聯盟都實際上忽略了排序... – 2010-09-08 11:46:28
請原諒我的無知,但這是什麼意思是「那麼其他1 999」? – Tom 2010-09-08 10:47:29
來自案例的數據。柏林時,它返回0否則它返回999 – 2010-09-08 10:48:32
做這個查詢需要客戶以及爲了條款?如果沒有,它不給數字列的結果 – 2010-09-08 10:58:40