1

これは簡単な質問だと思いますが、グーグルは私に結果を選択して数えるだけです。

制限のあるテーブルから選択して、通常はクエリの影響を受けるすべての行をカウントできるかどうか疑問に思っています。

例えば:

テーブルカーで100行を取得し、最初の20行を選択して、1つのクエリでcarsテーブルにある車の数をカウントします。

前もって感謝します

4

2 に答える 2

1

次の関数を使用SQL_CALC_FOUND_ROWSしてから使用します。FOUND_ROWS()

SELECT SQL_CALC_FOUND_ROWS * FROM ... LIMIT 100;
SELECT FOUND_ROWS();
于 2012-05-31T12:51:31.867 に答える
1

私があなたの必要性を理解している場合(制限されたクエリの結果と完全なテーブルの行数が必要であると理解しています)、これはSELECTサブクエリを使用するか、サブクエリJOINに対して実行できます。カウントクエリから1行だけ戻ることが期待されるため、デカルト結合を使用できます(ON句なし)。すべての行の数は、各列で同じ値として表示されます。

SELECT
  cars.*,
  carcount.numcars
FROM
  cars
  JOIN (SELECT COUNT(*) AS numcars FROM cars) carcount
LIMIT 20

次のような結果が生成されます

make     model     numcars
ford     focus     100
ford     model t   100
...
...
20 rows, numcars always = 100
于 2012-05-31T12:51:36.047 に答える