私はmysqlテーブルの重複行を選択しようとしていますが、私にとってはうまく機能していますが、問題はそのクエリ内のすべてのフィールドを選択させないことです。より良いアンダースタディングのクエリ
mysql_query("SELECT DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")
mysql_query("SELECT * , DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")
1つ目は正常に動作しています
今、すべてのフィールドを選択しようとすると、エラーが発生します
私は最新の複製を選択しようとしていますが、ticket_id 127は行ID7、8、9で3回であるとしましょうticket_idの
どんなアイデアありがとう
何方をお探しですか "SELECT * FROM temp_tickets GROUP BY ticket_id ORDER BY ticket_id
?
[〜#〜] update [〜#〜]
SELECT t.*
FROM
(SELECT ticket_id, MAX(id) as id FROM temp_tickets GROUP BY ticket_id) a
INNER JOIN temp_tickets t ON (t.id = a.id)
DISTINCTは、一部の列にのみ適用される関数ではありません。これは、選択リスト内のすべての列に適用されるクエリ修飾子です。
つまり、DISTINCTは、all列が別の行の列と同一の場合にのみ行を削減します。
DISTINCTは、SELECTの直後に(SQL_CALC_FOUND_ROWSなどの他のクエリ修飾子と共に)続く必要があります。次に、クエリ修飾子に従って、列を一覧表示できます。
右:SELECT DISTINCT foo, ticket_id FROM table...
Ticket_idandfooの値の個別のペアごとに行を出力します。
間違った:SELECT foo, DISTINCT ticket_id FROM table...
Ticket_idに3つの異なる値がある場合、これは3行のみを返しますか? fooに6つの異なる値がある場合はどうなりますか? fooの6つの可能な値のうち、どの3つの値を出力する必要がありますか?
書かれているようにあいまいです。
個別の代わりにgroup byを使用できます。 distinctを使用すると、テーブルからすべての値を選択するのに苦労するためです。 group byを使用する場合とは異なり、異なる値とテーブル内のすべてのフィールドを取得できます。
あなたはそのように使うことができます
mysql_query( "SELECT DISTINCT(ticket_id)、column1、column2、column3 FROM temp_tickets ORDER BY ticket_id")
副選択を使用します。