필요한 결과를 얻을 수 있지만 빠른 쿼리가 필요합니다.빠른 MySQL 쿼리를 사용하여 그룹의 마지막 값과 이전 값 찾기
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
어떤 아이디어 :
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
여기에 내가 필요로하는 결과는?
편집 : 나는 잊었다 여기 내 쿼리를 쓴 내 쿼리입니다합니다 :
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 문에서 둘 이상의 열이 있지만 문제가되지 않습니다.)
원래 쿼리 ~ 0.04seconds 걸립니다. 만약 where 문에서 다른 두 개의 열로 결과를 필터링하면 ~ 0.001 초가 걸립니다.
시스템을 – JellyBelly
이 질문을 추측 할 수있는 Mensa 퍼즐입니다. –
@Jet Php 질문은, 서면으로, "나는 알아 냈다. 이제 네가 할 수 있는지 보자."라고 말하면서, 나는 당신이 찾고있는 톤이 아닌 것 같다. 솔루션을 보여 주면 도움이 될 것이며, * it * 개선을 제안 할 수 있습니다. 감사. :) –