我有一個頁面顯示公司名稱及其表A的詳細信息A. 現在說我有一家公司顯示,它的名字是'Company_one'現在我想按字母順序排序下一個公司和以前的公司和他們的詳細信息等。如何按字母順序獲取next和prev記錄的最小取回記錄?
我表中的數據沒有排序,它在獲取數據時存儲。
那麼現在應該寫什麼樣的查詢,它只給出一個前一個和一個下一個按字母順序排序的記錄? Plz help !!
我有一個頁面顯示公司名稱及其表A的詳細信息A. 現在說我有一家公司顯示,它的名字是'Company_one'現在我想按字母順序排序下一個公司和以前的公司和他們的詳細信息等。如何按字母順序獲取next和prev記錄的最小取回記錄?
我表中的數據沒有排序,它在獲取數據時存儲。
那麼現在應該寫什麼樣的查詢,它只給出一個前一個和一個下一個按字母順序排序的記錄? Plz help !!
有沒有好的辦法做到這一點在一個查詢中。只要做兩個查詢。
要獲得前一個:
SELECT * FROM companies
WHERE name < variable_with_current_name
ORDER BY name DESC
LIMIT 1
相處的下一個:基於Dominic的答案
SELECT * FROM companies
WHERE name > variable_with_current_name
ORDER BY name ASC
LIMIT 1
您需要使用sort clause對錶格進行排序。原型爲sort
是:
sort by fieldname
實例查詢:
select * from your_table sort by company asc
如果你想限制記錄,使用limit
條款:
select * from your_table sort by company asc limit 0, 1
,您可以使用單個查詢得到同樣的結果通過將它們與結合WHERE
和OR
。
例如:
SELECT * FROM `companies`
WHERE (
`name` = IFNULL(
(SELECT `name` FROM `companies`
WHERE `name` < 'variable_with_current_name'
ORDER BY `name` DESC
LIMIT 1)
, 0)
OR
`name` = IFNULL(
(SELECT `name` FROM `companies`
WHERE `name` > 'variable_with_current_name'
ORDER BY `name` ASC
LIMIT 1)
, 0)
)
希望有所幫助。
你的桌子上有索引嗎? – Martin 2010-03-05 11:54:38
你我有索引 – developer 2010-03-05 12:08:58