Php MySQL从另一个表排序

Php MySQL从另一个表排序,php,mysql,select,inner-join,Php,Mysql,Select,Inner Join,我已经为这个问题寻找了一个多小时的解决方案,并决定在这里提问 我正在为我网站的用户创建一个“类似推特”的跟踪系统,我希望能够显示特定用户跟踪或跟随的每个用户,我还希望通过下表上的时间戳对其进行排序,以使最新的跟踪者位于顶部 我遇到的解决方案似乎使用了内部连接等,这一切都很好,但我想知道,对于我当前的查询,是否有一个逻辑解决方案可以做到这一点 表结构: 用户: 如下: id | follower_id | following_id | timestamp 我当前的查询: SELECT * FRO

我已经为这个问题寻找了一个多小时的解决方案,并决定在这里提问

我正在为我网站的用户创建一个“类似推特”的跟踪系统,我希望能够显示特定用户跟踪或跟随的每个用户,我还希望通过下表上的时间戳对其进行排序,以使最新的跟踪者位于顶部

我遇到的解决方案似乎使用了内部连接等,这一切都很好,但我想知道,对于我当前的查询,是否有一个逻辑解决方案可以做到这一点

表结构: 用户:

如下:

id | follower_id | following_id | timestamp
我当前的查询:

SELECT * FROM users WHERE id IN (SELECT follower_id FROM follows WHERE following_id = $user_id) ORDER BY id ASC

当然,这只需按用户ID排序,我(使用当前的查询结构)如何才能按以下时间戳将订单添加到列表中?

您可以使用以下多个列进行排序:

ORDER BY [column1] [ASC|DESC], [columm2] [ASC|DESC], ...
SELECT users.*
FROM users
JOIN follows ON users.id = follows.following_id
WHERE follows.following_id = $user_id
ORDER BY users.id ASC, follows.timestamp DESC
因此,请编辑查询的ORDERBY子句以包含第二列并按降序排序

必须使用联接来添加列;以下是连接的基本语法:

SELECT [table_name].[column_name], ...
FROM [table1]
JOIN [table2] ON [join condition]
...
您的代码应该有点像这样:

ORDER BY [column1] [ASC|DESC], [columm2] [ASC|DESC], ...
SELECT users.*
FROM users
JOIN follows ON users.id = follows.following_id
WHERE follows.following_id = $user_id
ORDER BY users.id ASC, follows.timestamp DESC
据我所知,在不加入表格的情况下,没有办法做到这一点;也许可以对返回的列表进行排序,但不能保证):

以上可能有效,也可能无效(我没有测试它);如果它不是
,则必须使用一个连接查询


合乎逻辑的解决方案是使用联接。你有什么问题吗?你不能按不在ResultSetToh中的列排序,他应该使用联接;对不起,我略读了一下,这并不能完全回答问题;他希望按用户id ASC排序,然后按时间戳DESC排序;另外,添加解释而不是链接。
"SELECT users.* FROM users 
INNER JOIN follows ON follows.follower_id = users.id 
WHERE follows.following_id = $user_id 
ORDER BY follows.timestamp DESC";