主要表:'帖子'。
结构:
id || text || time || user_id
辅助表:'喜欢'
结构:
id || post_id || time || user_id
这里,第二个表中的post_id可以(并且必须)是第一个表中的ID。我想运行一个查询,我将从特定user_id的posts表中获取所有ID,并从特定user_id的likes表中获取所有POST_ID。
这是我尝试过的,但它只从posts表中获取ID,不会从likes表中获取任何内容:
"SELECT id FROM posts WHERE id IN (SELECT post_id FROM likes WHERE user_id=$userid) OR id IN (SELECT id FROM posts WHERE user_id=$userid)"
但是,当我在结尾删除OR语句时,将从like表中获取post_ids:
"SELECT id FROM posts WHERE id IN (SELECT post_id FROM likes WHERE user_id=$userid)"
我做错了什么?请帮忙。非常感激。谢谢!
额外:
以ID的降序排序它们的任何方式?
如果我通过" p.id DESC"然后所有来自喜欢表的post_ids出现在底部。
例如,
邮政表中有7个ID(1,2,3,4,5,9,10),
3喜欢表(6,7,8)。
目前显示如下:10,9,5,4,3,2,1,6,7,8。
如何显示它:10,9,8,7,6,5,4,3,2,1?谢谢!
答案 0 :(得分:1)
使用JOIN
SELECT id FROM posts
LEFT JOIN likes ON posts.id = likes.post_id
WHERE likes.user_id = $userid
答案 1 :(得分:1)
如果你想从post表中获取LEFT JOIN
id,你可以像这样在这个场景中尝试mysql ALL
,否则简单的INNER JOIN
将完成你的任务。
SELECT p.id,l.post_id FROM posts p
LEFT JOIN likes l ON p.id=l.post_id
WHERE p.user_id=$userid OR l.user_id=$userid
编辑:
SELECT p.id FROM posts p
LEFT JOIN likes l ON p.id=l.post_id
WHERE p.user_id=$userid OR
l.user_id=$userid
ORDER BY p.id DESC