sql >> データベース >  >> RDS >> Mysql

MySQLLEFTJOINは結果を複製します

    いいえ、これで問題ありません。これは、DISTINCTを使用する場合のまれなケースの1つにすぎません。 重複を削除するためのキーワード。

    この場合、これは、複数の行を返す場合でも、クエリのロジックが正しいという事実によって正当化されます。多くの場合、DISTINCTの使用法を見ることができます 実際にクエリのロジックが間違っている場合。

    補足:

    • WHEREで使用しているテーブル参照のフィルター IS NULL/IS NOT NULL以外の句 LEFT JOINを作成します この同じテーブル参照で、INNER JOINに移動します 、最終的な結果セットの動作について。 (これを参照してください: https://stackoverflow.com/a/15483895/1291428
    • GROUP BYは使用しないでください DISTINCTの効果をシミュレートします 、2つの理由:

      1/これは目的ではありません。 GROUP BYの効果の1つ 重複を排除することですが、その主な目的は、いくつかの分析計算/操作を適用するために、特定の基準セットに従って行をグループ化することです。

      2 / GROUP BY また、ORDER BY 結果(mysql内)。これは必ずしも必要なものではなく、その場合は実行速度が低下します。エンジンが提供するものを適切に使用するようにしてください。これは、上位互換性の観点から常に優れています。 (付与されたものとして含めるものは実際にはそうではないことを予期して)

    よろしく。



    1. PostgreSQLおよびC#のデータ型

    2. SQLとは何ですか?SQLを使い始める方法は?

    3. mysqlピボットテーブルの日付(垂直から水平のデータ)

    4. json文字列を暗号化/復号化するための最良の方法は何ですか