主表:“帖子”。
结构:
id || text || time || user_id
辅助表:“喜欢”。
结构:
id || post_id || time || user_id
这里,第二个表中的 post_id 可以(且必须)是第一个表中的 ID。我想运行一个查询,从特定 user_id 的 posts 表中获取所有 ID,并从特定 user_id 的 Like 表中获取所有 POST_ID。
这是我尝试过的,但它只从 posts 表中获取 ID,而没有从 Like 表中获取任何内容:
"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 语句时,会从 Likes 表中获取 post_ids:
"SELECT id FROM posts WHERE id IN (SELECT post_id FROM likes WHERE user_id=$userid)"
我做错了什么?请帮忙。非常感激。谢谢!
额外:
有什么方法可以按 ID 的降序排列它们吗?
如果我按“p.id DESC”排序,那么喜欢表中的所有 post_ids 都会显示在底部。
例如,
post 表中有 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?谢谢!
最佳答案
如果你想从post表中获取ALL
id,你可以在这种情况下尝试mysql LEFT JOIN
,否则简单的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
关于php - 从 2 个表获取数据,其中一个表依赖于另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29778285/