すべての行を照会し、条件を満たすかどうかによって順序を入れ、返された結果を制限することができます。
MySQLの:
SELECT *
FROM customers
ORDER BY CASE WHEN customer_id IN ('c7', 'c77', 'c777') THEN 1 ELSE 0 END DESC
LIMIT 10000
MS SQL Serverの:
SELECT TOP 10000 *
FROM customers
ORDER BY CASE WHEN customer_id IN ('c7', 'c77', 'c777') THEN 1 ELSE 0 END DESC
のOracle 12C:
SELECT *
FROM customers
ORDER BY CASE WHEN customer_id IN ('c7', 'c77', 'c777') THEN 1 ELSE 0 END DESC
FETCH FIRST 10000 ROWS ONLY
ウィンドウ関数を使用するANSI SQL:
SELECT *
FROM (SELECT *,
ROW_NUMBER() OVER
(ORDER BY CASE
WHEN customer_id IN ('c7', 'c77', 'c777') THEN 1
ELSE 0 END DESC) rn
FROM customers) t
WHERE rn <= 10000
どのDBMSを使用していますか? –
"AND"でSELECTステートメントを試しましたか? –
正直なところ私はDremelを使っていますが、私はDremelとRDBMSの完全なnoobですから、私はそれがRDBMS領域に存在するかどうかを最初に尋ねています。 – menorah84