MySQL "SELECT DISTINCT" のジレンマ
MySQL データベース管理では、"SELECT DISTINCT" は、データベースから重複行を削除するために使用されるクエリ修飾子です。結果セット。ただし、テーブル内のすべてのフィールドを個別の値とともに選択しようとすると、一般的な問題が発生します。
クエリ SELECT DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id は、実質的に一意の ticket_id 値のみを取得します。ただし、クエリを SELECT * , DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id に拡張すると、「DISTINCT.」の配置が間違っているためにエラーが発生します。
正しい構文
「DISTINCT」は、クエリ ステートメントの「SELECT」の直後に配置する必要があります。正しい構文は次のとおりです。
SELECT DISTINCT ticket_id, OTHER_COLUMN1, OTHER_COLUMN2, ... FROM temp_tickets ORDER BY ticket_id
この構文では、「DISTINCT」は、並べ替え (ORDER BY) に使用される列を含む、選択リストにリストされているすべての列に適用されます。したがって、クエリは、リストされた列内の値の一意の組み合わせごとに個別の行を返します。
論理的説明
「DISTINCT」は、すべての列が選択リストの値は同じです。これは、他の列に異なる値が含まれている場合、その行は一意であるとみなされ、結果セットに含まれることを意味します。
間違った構文 SELECT foo, DISTINCT ticket_id FROM table... では、クエリがあいまいですどの行を削除するかを決定する方法が不明瞭であるためです。 ticket_id に 3 つの異なる値があり、foo に 6 つの異なる値がある場合、foo のどの 3 つの値が個別の ticket_id 値と一緒に出力されるべきかは明確ではありません。 「SELECT」の直後に「DISTINCT」を置くと、クエリが明確になり、曖昧さがなくなります。
以上がすべてのフィールドを選択すると、MySQL「SELECT DISTINCT」でエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。