2017-04-13 36 views
0

我需要寫沿SQL LIMIT關鍵字:確保特定結果包含

SELECT * WHERE id == x OR id >= y LIMIT 100 FROM ... 

,我需要的結果ID ==要包含X行的SQL預取,而其他結果都只是獎金。這可能嗎?如果沒有,我想如果ID是排序的,並且返回的結果是在他們的排序中,我仍然可以在保證包含id == x的情況下進行查詢。但可能會很棘手。

編輯:所以答案(來自RBM)是這樣的:

(SELECT * WHERE id == x) 
UNION 
(SELECT * WHERE id > y LIMIT 100) 

注:這沒關係,我可以有結果

+1

你需要兩個選擇和聯合。你的'id == x OR id> = y'不能保證'id == x'會被選中。 – rbm

+0

這是可能的,但你有SQL構建所有不起眼。它去'''SELECT * FROM ... WHERE ... LIMIT ...'''。另外,請標記您的數據庫。 – Anand

+0

@Anand,不,不會保證包含'id == x'。 – rbm

回答

2

的+ -1號如果您需要ID = X被列入,做這樣的事情:

select case when id = x then 1 else 2 end sortOrder 
etc 
order by sortOrder 
+0

我看到關於限制切斷行的觀點,所以你可以使用它來確保它不是隔斷。 – Anand

1

把它的SQL語法後,它看起來像:

SELECT * 
FROM ... 
WHERE id = x OR id >= y 
ORDER BY CASE WHEN id = x THEN 0 ELSE 1 END ASC 
LIMIT 100 

編輯:提醒:訂單後應用限制。

相關問題