0

以下の結果セットでは、2 人の一意のユーザー (id) が存在し、そのようなユーザーがクエリからさらに出てくる可能性があります。

ここに画像の説明を入力

マルチ結合クエリは次のとおりです。

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 人のユーザー データしか取得できません。

Q1: 特定の列に基づいて制限を設定するにはどうすればよいですか?

Q2: SQL limit 句を使用することは、ページネーションの正しいアプローチであり、エンド ユーザーの応答時間を改善することにもなりますか? そうでない場合、このシナリオで他に何が使用できますか?

4

1 に答える 1

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: はい

于 2016-08-15T12:26:17.260 に答える