mysql - 对特定列应用 SQL 限制,而不是对完整结果集应用 SQL 限制

标签 mysql pagination sql-limit mysql-variables

在下面给出的结果集中,有 2 个唯一用户 (id),并且查询中可能会出现更多此类用户:

enter image description here

这是多连接查询:

select 
    id, name, col1Code, col2Code, col2Value 
from 
    users_table UT
join 
    col1_table C1T on UT.id = C1T.user_ID_FK
join 
    col2_table C2T on UT.id = C2T.user_ID_FK
order by 
    UT.id 
limit 10

假设此查询中有 50 个此类用户。如果我出于分页目的应用 10 个限制,则不会获得 10 个用户,而只会获得前 10 行,其中可能只有 1 或 2 个用户数据。

问题1:如何根据特定列设置限制?

问题 2:使用 SQL 限制子句是分页的正确方法吗?对于提高最终用户的响应时间也是如此吗?如果不是,那么在这种情况下还可以使用什么?

最佳答案

Q1:您可以使用子查询来获取不同的用户。

select id, name, col1Code, col2Code, col2Value 
from 
 (select distinct id, name from users_table) UT
 join col1_table C1T on UT.id = C1T.user_ID_FK
 join col2_table C2T on UT.id = C2T.user_ID_FK
 order by UT.id limit 10

问题2:是的

关于mysql - 对特定列应用 SQL 限制,而不是对完整结果集应用 SQL 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38955007/

相关文章:

php - 如何通过选定的id来选择一个单元格。 SQL

javascript - Grails:使用 twitter bootstrap 分页显示动态内容?

android - SQLite 是否保证结果的顺序与表相匹配?

mysql - 计算某个值是否存在于一系列键中

mysql - 在加入冗余和得到

php - 存储在 MySQL 中并在 HTML 表中显示可变数量的行

ios - UITableView分页,会显示无限加载

angular - 如何从 Material Angular 使用分页器?

MySQL LIMIT 语句,返回错误的行数

mysql - 如何从mysql表中每次选择50行