2016-08-15 86 views
0

在下面给出的结果集,其中有2个独立用户(ID),并可能有更多这样的用户走出查询:特定的栏应用SQL限制,而不是完整的结果集

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限制子句正确的分页方法,也是为了改善最终用户的响应时间?如果不是,那么在这种情况下还有什么可以使用的?

+0

首先你需要定义你的预期结果将如何总是吐了出来。你是否已经完成了上述工作,或者仍然处于空中并留下混乱状态? – Drew

+1

[在GROUP BY中使用LIMIT获得每个组的N个结果?]可能的重复(http://stackoverflow.com/questions/2129693/using-limit-within-group-by-to-get-n-results-per -group) –

+0

因为我需要所有用户的所有Col1和Col2值,所以我不知道每个用户可以提取的行数。所以总的来说,我需要完整的结果集,它有10个唯一用户ID。我仍然听起来很困惑? –

回答

0

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 

Q2:是