2011-08-27 69 views
0

這裏去...多個選擇 - 相同的表

我有一個標題爲MyTable的單表中有5個記錄稱爲Se。 5條記錄包含下列值(1-5):

se=1 se=2 se=3 se=4 se=5 

我想有回我的記錄如下:

SELECT * FROM MyTable WHERE se >= 3 
UNION 
SELECT * FROM MyTable WHERE se < 3 
ORDER BY se ASC 

我的目標是獲得返回的記錄爲:

3,4,5,1 2

,但我自然得到...

1,2,3,4,5

你能幫助我嗎? MSSQL Server甚至可以做到這一點?

在此先感謝您的幫助。

回答

1

如果您正在尋找爲特定場景黑客攻擊:

SELECT * FROM MyTable ORDER BY (se + 2) % 5 

PostgreSQL的例子:

$ WITH MyTable(se) AS (VALUES 
$  (1), (2), (3), (4), (5) 
$) 
$ SELECT * FROM MyTable ORDER BY (se + 2) % 5; 
se 
---- 
    3 
    4 
    5 
    1 
    2 
(5 rows) 
5

試試這個

SELECT 1, * FROM MyTable WHERE se >= 3 
UNION ALL 
SELECT 2, * FROM MyTable WHERE se < 3 
ORDER BY 1, se ASC 
+0

+1這部作品的PostgreSQL。聰明的想法。 – cdhowie

+0

完美---這是作品!非常感謝。 –

+0

如果它工作,請標記此答案是正確的。 – Chris

3

可以使用單一選擇和排序條件:

select * 
from MyTable 
order by (case when se >= 3 then 0 else 1 end), se 

(無需在身邊的情況下括號,我只是說他們使代碼更清晰。)

相關問題