私は非常に奇妙なことをしなければならず、単に方法がわかりません。これは私のテーブルとそのデータです:
+------+-----------+-------------+-------+------------+
| uid | entity_id | entity_type | state | created |
+------+-----------+-------------+-------+------------+
| 3913 | 1105 | 1 | 0 | 1340617072 |
| 3913 | 1105 | 1 | 1 | 1340617042 |
| 3913 | 3930 | 1 | 0 | 1340617071 |
| 3913 | 3930 | 1 | 1 | 1340617036 |
+------+-----------+-------------+-------+------------+
created
アクションが行われたタイムスタンプを保持し、アクションstate
の状態 (フォローされているかフォローされていないか) でuid
あり、アクションを行った人物でありentity_id
、フォローされている/フォローされていないエンティティ ID です。
entity_id
現在のユーザーがフォローしているすべてのものを取得するクエリを実行しようとしています。最初に私が使用していた:
SELECT entity_id FROM follow_objects WHERE uid=? AND entity_type=?
ただし、誰かをフォローしてからフォローを解除しても、その人の結果が得られることに気付きました。これは、2 つのエントリ (状態 = 1 と状態 = 0) があるためです。
したがって、最新の列を持つ行を取得する必要がありcreated
ます。つまり、アクションは最新のものです。だから私は試しました:
SELECT entity_id FROM follow_objects WHERE uid=? AND entity_type=? group by entity_id HAVING created=MAX(created)
ごみデータのみを返します。私はアイデアがありません。何か助けはありますか?