私は非常に奇妙なことをしなければならず、単に方法がわかりません。これは私のテーブルとそのデータです:
+------+-----------+-------------+-------+------------+
| 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)
ごみデータのみを返します。私はアイデアがありません。何か助けはありますか?