0

以下を使用して、ユーザーが最後に追加したイベントを選択します

SELECT MAX(user_event_id) from user_events where user_id = 63

この行には、event_titleまだ列があります。試してみると、次のようになります。

SELECT MAX(user_event_id), event_title from user_events where user_id = 63

返されたevent_titleがuser_event_idに対応していません

最後のuser_event_idとevent_titleを返すことは可能ですか?

4

2 に答える 2

4

このソリューションでは、テーブルが長い場合に実行が遅くなるORDERBYは必要ありません。

SELECT user_event_id, event_title
FROM user_events
WHERE user_event_id = (SELECT MAX(user_event_id)
                       FROM user_events
                       WHERE user_id = 63)
AND user_id = 63   -- This clause not needed if user_event_id is unique
于 2012-12-16T18:45:54.483 に答える
2
SELECT user_event_id, event_title 
from user_events 
where user_id = 63
order by user_event_id desc
limit 1

ほとんどのDBMSでは、event_titleをフィールドリストに含めることはできません(作成者のように)。これは、グループ化や集計関数には使用されないためです。しかし、mysqlはそうしますが、多くの場合、予期しない結果になります。

更新:ユーザーの最小user_event_idが同じであるレコードが複数ある場合、このクエリは1つのレコードのみを返します。したがって、同じuser_event_idを持つすべてのレコードを返すBarryBrownのソリューションとは少し異なる問題に対処します。

于 2012-12-16T18:40:10.610 に答える