0

C# の代わりに sql を使用してリストを生成するより良い方法を探しています。それは私が間違っているほど簡単に思えます

Number/City/State を含む PhoneNumbers というテーブルがあるとします。

例 (数百万の数):

NUMBER          CITY        STATE
555-555-5555    New York    NY
111-111-1111    Los Angeles CA
222-222-2222    Houston     TX
333-333-3333    Miami       FL

各州から 10 個の電話番号を返すクエリが必要です

現在、50州すべてに対して個別にクエリを実行し、それらをデータセットに結合していますが、それは大きなデータベースなので遅いです.必要なデータを引き出す簡単な方法があることを願っています.

4

3 に答える 3

0

次のクエリは、Oracle と SQL Server では機能しますが、MySQL では機能しません。

with cte as
(select number, city, state,
 row_number() over (partition by state order by state) rn
 from yourtable)

select number,city,state
from cte
where rn <= 10

特定のフィールドでソートされた最初の 10 行が必要な場合は、必要に応じて を微調整する必要があることに注意してorder byください。

于 2014-07-09T05:06:05.037 に答える
0

UNION ALL単純に句を使用できます。このようなもの: -

(SELECT NUMBER, CITY, STATE FROM TABLE_NAME WHERE STATE = 'NY' ORDER BY CITY LIMIT 10)
UNION ALL
(SELECT NUMBER, CITY, STATE FROM TABLE_NAME WHERE STATE = 'CA' ORDER BY CITY LIMIT 10)
UNION ALL
(SELECT NUMBER, CITY, STATE FROM TABLE_NAME WHERE STATE = 'TX' ORDER BY CITY LIMIT 10)
UNION ALL
(SELECT NUMBER, CITY, STATE FROM TABLE_NAME WHERE STATE = 'FL' ORDER BY CITY LIMIT 10)

これがあなたを助けることを願っています。

于 2014-07-09T05:12:12.490 に答える