-2

複雑なMySqlSELECTクエリがあります。

SELECT id, login, date...
FROM tab1
  LEFT JOIN tab2
  LEFT JOIN tab3
  LEFT JOIN tab4
  ...
WHERE
 condition1 = value
 condition2 = value
 ...
ORDER ...
LIMIT ...

同じ選択から結果の数を取得する必要がありますが、condition1とlimitはありません。最善の解決策は何ですか?2つのSELECTクエリを作成するよりも優れた解決策はありますか?

4

2 に答える 2

0

COUNT別のクエリを実行するために必要な行数が必要な場合、集計結果と実際の行を一度に返すことはできません。

あなたの場合、WHERE句も変更しているため、クライアント側でも行を数えることはできません。

パフォーマンスが気になる場合は、使用している実際のクエリを表示して、誰でも助けてもらえるようにする必要があります。

于 2012-04-16T15:18:46.540 に答える
0

condition1 をパラメーターとして渡し、ブール論理を使用してそれを含めるか除外します。

...
WHERE
condition1 = value OR condition1 IS NULL

condition1 を使用したくない場合は、null に設定するか、null パラメータを渡します。これにより、SELECT が最初の条件を気にしないことが保証されます。次に、次のように評価されます。

...
WHERE
FALSE OR TRUE

また、ブール論理は、1 つの値が true の場合に結果が true であることを示します。condition1 が必要な場合は、実際の値を渡すと、結果は次のようになります

...
WHERE
TRUE OR FALSE

これもTRUEと評価され、値でフィルタリングしたため、条件が満たされていることが保証されます。

于 2012-04-16T14:58:02.997 に答える