MySQL クエリで DISTINCT を使用してすべてのフィールドを選択できない
DISTINCT キーワードを使用して重複行を削除しようとすると、ユーザーは次の制限に遭遇する可能性があります。 MySQL クエリ内のすべてのフィールドを選択します。この記事では、この問題に対処し、解決策を示します。
Background
DISTINCT キーワードは、指定された列に基づいて結果セット内の固有の行のみを識別し、返します。 )。ただし、すべて選択ステートメント (*) と組み合わせると、エラーが発生する可能性があります。
temp_tickets テーブルの ticket_id 列のみを選択し、ticket_id で並べ替える次のクエリを考えてみましょう。
mysql_query("SELECT DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")
このクエリは正常に実行され、個別の ticket_id 値が返されます。ただし、すべてのフィールドを選択して DISTINCT:
mysql_query("SELECT * , DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")
を使用しようとする次のクエリはエラーになります。これは、DISTINCT は単一の列にのみ適用できるためです。
解決策
すべてのフィールドを選択し、DISTINCT を使用して重複を排除するには、クエリを次のように変更します。
SELECT ticket_id, <other_field>, <other_field> FROM temp_tickets GROUP BY ticket_id ORDER BY ticket_id
このクエリでは、GROUP BY 句を DISTINCT と組み合わせて使用して、ticket_id 列ごとに結果をグループ化します。一意の ticket_id ごとに、指定されたフィールドの最新の値を含む単一行のみが返されます。
以上がMySQL で DISTINCT を含むすべてのフィールドを選択する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。