0

さて、タイトルは私がここでやろうとしていることを正当化しないかもしれませんが、それを完全に説明するのに十分なほど私の問題を知りません.

私がやろうとしていること:

response = 8 または 9 の MySQL データベースから行を取得する必要がありますが、複数の一致がある場合は最新のエントリを表示します。6 つの行があり、1 つの行に応答 = 8 があり、応答 = 9 の 2 つの行があるとします。行 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

応答 = 8 または 9 の最新のエントリであるため、row1 を取得したい

試しましたが失敗しました:

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

ありがとうございます。

4

3 に答える 3

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
于 2012-04-18T18:13:51.270 に答える
0

私があなたの質問を理解idし、指定されたユーザーの最新の行 (つまり、列の最大値) が必要であると仮定しますが、応答が 8 または 9 の場合のみ、試してください。

SELECT id 
FROM user 
WHERE user_id = $userID 
  AND response IN (8,9)
ORDER BY id DESC
于 2012-04-18T18:25:18.097 に答える
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
于 2012-04-18T18:26:32.010 に答える