我已经纠结了好几个小时了,所以请帮助我。这是我的users表
id | username | last_activity(timestamp for online system)
这是我的朋友表
id | uid | fid
我想要的是按last_activity排序输出我当前的查询是这样的:
SELECT fid FROM friends WHERE uid='$user_id'
SELECT f.fid FROM f.friends
LEFT JOIN users u ON f.uid = u.id
WHERE uid=$user_id
ORDER BY u.last_activity DESC
您想使用INNER JOIN
连接两个表:
SELECT f.fid
FROM friends f
INNER JOIN users u
ON u.id = f.id
ORDER BY u.last_activity DESC
一定要确保你输入的是一个真正的JOIN子句,因为有些方法已经过时了,而且越来越不受支持。
在这里阅读更多内容:
我想你要
SELECT f.fid AS fid
FROM friends f, users u
WHERE f.uid = u.id AND f.uid = $user_id
ORDER BY u.last_activity DESC
我假设您的问题是fid
在一个表上,但排序标准last_activity
在另一个表上。此查询的目标是将friends
表中的每一行与users
表中的相应行(通过WHERE
子句)进行JOIN
。
假设好友表中的
uid
等于用户表中的foreign key references to id
表格所以使用INNER JOIN你可以检索你想要的结果。
SELECT f.fid
FROM friends f INNER JOIN user_tb u
ON u.id = f.uid
WHERE f.uid = '$user_id'
ORDER BY u.last_activity DESC;