无法在 MySQL 查询中选择具有 DISTINCT 的所有字段
尝试使用 DISTINCT 关键字消除重复行时,用户可能会遇到以下限制:选择 MySQL 查询中的所有字段。本文解决了该问题并提供了解决方案。
背景
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中文网其他相关文章!