2013-03-22 28 views
1

我有以下SQL查詢:mysql如何 「按訂單」 第一限制導致

"SELECT id, case, value 
FROM tbl1 
WHERE (case > '100' OR case is null) 
ORDER BY case DESC, value DESC" 

的結果是這樣的:


| id | case  | value | 
-------------------------- 
| 17 | case1 | value1 | 
| 16 | case2 | value2 | 
| 14 | case3 | value3 | 
| 18 | empty | value4 | 
| 15 | empty | value5 | 

它給我,例如100結果在「案例」設置。 500個「案例」是空的。

現在我只需要20個第一個結果,其中「case」是SET,100個結果是「case」是EMPTY。

如果我做到以下幾點:

"SELECT id, case, value 
FROM tbl1 ... 
ORDER BY case DESC,value DESC 
LIMIT 0,120" 

它給了我在哪裏「的情況下」被設置的所有值...但我只想要20

回答

1

你最好unioning 2個查詢

SELECT id, case, value 
FROM tbl1 
WHERE CASE IS NOT NULL 
LIMIT 20 
UNION 
SELECT id, case, value 
FROM tbl1 
WHERE CASE IS NULL 
ORDER BY case DESC 
LIMIT 100 
+0

感謝您的幫助,我收到一條錯誤消息,提示「UNION和ORDER BY的使用不正確」,但我想這是因爲我使用了LEFT JOIN。我會弄清楚。 – user2129830 2013-03-22 18:07:44

+0

@ user2129830我修復了我的答案。 ORDER BY只能在最後。 – 2013-03-22 18:24:33

0

使用union

SELECT id, case, value 
FROM tbl1 
WHERE case > '100' 
ORDER BY case DESC, value DESC 
limit 20 
union 
SELECT id, case, value 
FROM tbl1 
WHERE case is null 
ORDER BY case DESC, value DESC 
limit 100 
+0

謝謝你的幫助。 我接受了第一個答案,因爲兩者幾乎相同。但也非常感謝你。 – user2129830 2013-03-22 18:09:45