我有一個自動增量字段的MySQL表,我想弄清楚如何使用純粹的MySQL獲得下一個或上一個值以及該行的其餘部分。該字段是AI,但數字不一定是連續的,因爲行一直被刪除。如果我爲自動增量字段指定了任何值,如何獲得下一個或上一個值?
FIELD_ID 8,15,17
這是我開始:
//to get next value in table:
SELECT MIN(member_id) AS val FROM members WHERE member_id > 15 LIMIT 1
//to get previous value in table:
SELECT MAX(member_id) AS val FROM members WHERE member_id < 15 LIMIT 1
但是,這只是返回member_id值。本工程以獲取下一個值(但不有所作爲,如果我使用DESC或ASC(WTF):
SELECT MIN(member_id),members.*
AS val FROM members
WHERE member_id > 15
ORDER BY member_id DESC
LIMIT 1
該查詢逆轉(獲取以前的值)始終在返回的最低值表(1):
SELECT MAX(member_id),members.*
FROM members
WHERE member_id < 15
ORDER BY member_id ASC
LIMIT 1
這兩個查詢,但是,表明我是想要什麼,但我其實並不完全知道爲什麼:
//get next LOWEST row
SELECT MAX(member_id),members.*
FROM members
WHERE member_id < 15
GROUP BY member_id
ORDER BY member_id DESC
LIMIT 1
//get next HIGHEST row:
SELECT MIN(member_id),members.*
FROM members
WHERE member_id > 15
GROUP BY member_id
ORDER BY member_id ASC
LIMIT 1
我假設GROUP BY讓我拉不止查詢中有一行是?有沒有更好的方法來做到這一點?
「我有一個帶有自動增量字段的MySQL表,我試圖弄清楚如何使用純粹的MySQL獲得下一個或上一個值以及該行的其餘部分。」這就是我想要做的。 15是我嘗試獲取下一個/ prev值的行的參考ID。 – 2010-11-15 22:38:13