我有三个表,一个有主题的表,一个用于用户数据的表,一个用于存储用户订阅的表。
用户可能/不订阅其可选的,因此要获取所有用户列表及其订阅状态,我使用左连接作为
SET @rnum = 0;
SELECT (@rnum :=@rnum + 1) AS rn, user.user_name, subs.status
FROM user_tbl LEFT JOIN subs_tbl ON user.uid = subs.uid LIMIT 0, 10;
我一次使用整个输出,但现在随着数据的增长,我已经在我的应用程序中实现了这个输出的分页。
对于分页,我创建了一个 row_num 机制,我将存储最后显示的 row_num,并且在下一页将显示 last_num。
现在我想对订阅的第一个或最后一个用户进行排序,所以我使用了
SELECT (@rnum :=@rnum + 1) AS rn, user.user_name, subs.status
FROM user_tbl LEFT JOIN subs_tbl ON user.uid = subs.uid ORDER BY subs.status LIMIT 0, 10;
这是给出行号但不是我想要的,它首先给出行号然后进行排序,所以我没有得到想要的结果。
所以我需要帮助,
- 有更好的分页方式吗?
- 是否有任何左连接的替代品(我也想要空值,因为我想要所有用户信息)。
- 是否有任何其他方法对 SQL 结果进行编号。
- 在这种情况下,是否有任何关于功能的 PHP 或任何可以帮助我的东西。
[这是根据我的实际问题创建的示例,在我的实际问题中,我有一个包含多个连接和子查询的巨大查询,因此无法嵌套此查询和编号]