2012-04-18 40 views
0

好吧,標題可能不會證明我在這裏要做的是什麼,但不知道我的問題是否足夠完整地解釋它。mysql檢索設置整數之間的最新條目

我想要做的事:

我需要從一個MySQL數據庫,其中響應= 8或者9,但如果有多個匹配顯示最新的一項檢索行。假設我有6行,1行的響應= 8,2行的響應= 9我想根據行ID檢索最新的條目。

例如:

ROW1 ID = 12 USER_ID = 15響應= 8

ROW2 ID = 11 USER_ID = 15響應= 9

ROW3 ID = 10 USER_ID = 15響應= 1

ROW4 ID = 09 USER_ID = 15響應= 9

ROW5 ID = 08 USER_ID = 15響應= 4

ROW6 ID = 07 USER_ID = 15響應= 5

我想要檢索ROW1,因爲它也正是響應= 8或9

我嘗試,但未能最新的條目:

SELECT a.id, MAX(a.response) FROM user a WHERE a.user_id = $userID AND a.response IN (8,9) GROUP BY a.user_id

先謝謝了。

回答

0
SELECT u.id, u.user_id, u.response 
FROM user u 
WHERE u.id in 
(
SELECT max(id) FROM user WHERE user_id = $userID and response IN (8,9) 
) ; 




ID USER_ID RESPONSE 
12 15 8 
+0

謝謝我感覺自己像一個白癡..大腦的霧 – knittledan 2012-04-18 18:46:29

0
SELECT a.id, MAX(a.response) -- Your columns 
FROM user a -- Table 
WHERE a.user_id = $userID -- your ESCAPED parameters (see mysql prepared stmts) 
AND a.response IN (8,9) 
GROUP BY a.response 
ORDER BY a.id DESC -- the greater the ID, the 'newer' 
LIMIT 1 -- just get one record 
0

假設我明白你的問題,你想要的最新行(即最高id列值)爲指定的用戶,但只有其中的反應是8或9,嘗試

SELECT id 
FROM user 
WHERE user_id = $userID 
    AND response IN (8,9) 
ORDER BY id DESC