1

簡単にするために、2 つのフィールド (PERSON_NAME と COMPANY_ID のペア) を持つテーブルがあるとします。

('a',1) ('b',1) ('c',2) ('d',2) ('e',3)

PERSON_NAME a と b は COMPANY_ID 1 で働いています。

最初の 2 (または N) COMPANIES のすべての行を選択したい -

('a',1) ('b',1) ('c',2) ('d',2)

COMPANY_ID ごとに何行あるかわかりません。

各 COMPANY_ID 内のすべての行が必要なため、ここでは GROUP BY は機能しません。
これは機能します-

SELECT * FROM T
WHERE COMPANY_ID in (SELECT DISTINCT COMPANY_ID
                     FROM T
                     ORDER BY 1 DESC
                     LIMIT N)

しかし、パフォーマンスが問題なので、それだけでは十分ではありません (約 25,000 社あり、各企業に約 5 ~ 15 人がいます)。N は通常 500 です。

4

1 に答える 1