我有一个小小的社交网络应用程序,用户可以"喜欢"别人发布的帖子。
我可以很容易地记录点赞,但我想每个用户只插入一个。现在,同一个用户可以一遍又一遍地"点赞"同一个帖子。
如何使用MySQL实现这一点?如果可能的话,我宁愿在一份声明中这样做。
这是我当前的INSERT语句
INSERT INTO app_likes (user_id, post_id) VALUES ($user_id, $post_id)
因此,基本上,我需要根据post_id检查该用户是否已经在app_likes表中有一个条目。
有道理吗?
使用WHERE NOT EXISTS
条件
INSERT INTO app_likes (user_id, post_id)
SELECT * FROM (SELECT $user_id, $post_id) AS tmp
WHERE NOT EXISTS (
SELECT user_id, post_id FROM app_likes WHERE user_id = $user_id AND post_id = $post_id
) LIMIT 1;