ホームページ >データベース >mysql チュートリアル >結果を失わずに複数の SELECT ステートメントを LIMIT 句と組み合わせるにはどうすればよいですか?
結果を破棄せずに複数の SELECT ステートメントを結合する
データベース クエリの最適化の領域では、複数の SELECT ステートメントを結合する必要があることがよくあります。単一のクエリ。ただし、提供されている例が示すように、LIMIT 句を個々の SELECT ステートメントに適用して結果を 1 行に制限すると、データ損失が発生する可能性があります。
この問題に対処するには、個々の SELECT ステートメントがステートメントは括弧で囲みます。そうすることで、クエリ構文がより明確になり、LIMIT 句がクエリ結果全体に適用されるのを防ぎます。
修正されたクエリは次のようになります。
(SELECT result FROM foo.table LIMIT 1) UNION ALL (SELECT result FROM bar.table LIMIT 1) UNION ALL (SELECT result FROM doo.table LIMIT 1)
この改訂されたクエリでは、個々のサブステートメントが括弧で囲まれており、LIMIT 句がそれぞれのサブクエリにのみ適用されることが保証されています。その結果、返されたすべての行が保持され、異なるスキーマ名を表す複数の行を含む目的の 1 列の結果が提供されます。
MySQL マニュアルには次のように明示的に記載されていることに注意することが重要です。
「select_statement は、ORDER BY、LIMIT、FOR UPDATE、または FOR SHARE 句のない任意の SELECT ステートメントです。(ORDER BY および LIMIT は可能です)括弧で囲まれている場合、部分式に付加されます。括弧がないと、これらの句は、右側の入力式ではなく、UNION の結果に適用されるとみなされます。)"
このルールを適用することにより、を使用すると、クエリが意図したとおりに実行され、意図せずにデータが破棄されないことを確認できます。
以上が結果を失わずに複数の SELECT ステートメントを LIMIT 句と組み合わせるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。