2016-08-15 87 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:是