2016-07-03 13 views
0

私はLIMITパラメータとmytableのフィールドにCOUNTを作る場合は、カウント(フィールド)を選択してフィールドを選択します。同じライン上にカウントされますか?

SELECT COUNT(field1), COUNT(field2) 
FROM mytable 
LIMIT 10000 

をそして、私は彼らのフィールドを選択した場合

SELECT field1, field2 
FROM mytable 
LIMIT 10000 

は、2つの要求と同じ10000行にselectcountはありますか?

ORDER BY句を2番目のリクエストに追加できますが、COUNTリクエストの場合は追加できません。ヘルプ

+2

カウントはLIMITより前に評価されます。これは、PostgreSQLがCOUNT関数のすべてのmytableを評価し、集計関数の結果が10000に制限されていることを意味します。基本的に、このLIMITはこのクエリでは無意味です。 10001行のテーブルでそれを実行すると、表示されます。 – Elad

答えて

2

ため

おかげで、希望の順序を指定するORDER BY句を指定せず、それにはカウントされませんが、保証はありません!

はちょうど別の選択で最初のクエリをラップ:あなたはあなたのクエリにorder byを追加するまで、あなたがの順序については何も言うことができない場合を除き

SELECT COUNT(field1),count(field2) 
FROM(SELECT field1,field2 
    FROM mytable 
    ORDER BY Order_Column 
    LIMIT 10000) t 

SELECT field1, field2 
FROM mytable 
ORDER BY Order_Column 
LIMIT 10000 

これらのクエリは、同じ行

+0

ありがとうございます。サブクエリにエイリアスを追加するだけです – Macbernie

+0

'Order_Column'が一意でない限り、同じ行が返される保証はありません:) – dnoeth

+0

そうです、それについては考えていませんでしたが、おそらく同じ行の** **を処理するでしょう:)、彼は答えを受け入れましたが、私はそれがユニークだと仮定しています。 – sagi

1

を処理します返された行この問題を解決するためにselect count(...)のネストされたクエリにorder byを追加できます。基本的に、2番目のクエリはネストされたクエリになります。select count(...)

-- Second query 
SELECT field1, field2 
FROM mytable 
ORDER BY ... LIMIT 10000 

-- First query 
SELECT COUNT(field1), COUNT(field2) FROM (
    SELECT field1, field2 
    FROM mytable 
    ORDER BY ... LIMIT 10000 
} 
関連する問題