我可以得到我需要的結果,但我需要一個快速查詢。使用快速MySQL查詢查找組中的最後一個值和以前的值
id value1 fid
1000 1203 5
1001 1293 1
1002 1203 3
1003 1211 1
1004 1263 1
1005 1223 5
1006 1243 2
1007 123 5
1008 1049 2
1009 1205 3
這裏有我需要的結果:
fid id value1 id2 previous_value1
1 1004 1263 1003 1211
2 1008 1049 1006 1243
3 1009 1205 1002 1203
5 1007 123 1005 1223
任何想法?
編輯:我忘了寫我的查詢,這裏是我的查詢:
SELECT
t1.fid,
t1.id,
t1.value1,
t2.id AS id2,
t2.value1 AS previous_value1
FROM
(
SELECT
MAX(id) AS id
FROM TABLENAME
GROUP BY fid
) t3
INNER JOIN TABLENAME t1 ON t1.id = t3.id
INNER JOIN TABLENAME t2 ON t2.id = (SELECT id FROM TABLENAME WHERE id < t1.id AND fid = t1.fid ORDER BY id DESC LIMIT 1)
其實我通過去除多餘的列簡化它。
(有一個在WHERE語句2個列,但它沒有問題。)
原來的查詢需要〜0.04秒。如果我用where語句中的其他兩列過濾結果,則需要大約0.001秒。
系統,您的問題,請 – JellyBelly
這是一種曼薩難題來猜測這個問題嗎? –
@Jet Php這個問題,正如所寫的,非常多的問題是「我明白了,現在讓我們看看你能不能」,我敢肯定這不是你要找的語氣。向我們展示您的解決方案會很有幫助,並讓我們建議對* it *進行改進。謝謝。 :) –