您可以用DISTINCT
关键字替换GROUP BY
子句。
SELECT
title
, series_number
FROM
programme_table
WHERE title LIKE '$letter%'
GROUP BY
title
, series_number
目前还有另外两个有效的选项:Mohammad
建议的选项是使用子句而不是实际上不太理想的子句:HAVING
WHERE
该WHERE
子句用于限制记录,查询优化器也使用该子句来确定要使用哪些索引和表。HAVING
是最终结果集上的“过滤器”,在 and 之后应用ORDER BY
,GROUP BY
因此 MySQL 无法使用它来优化查询。
所以HAVING
不是最优的,你应该只在你不能使用'WHERE'来得到你的结果时才使用它。
quosoo指出该DISTINCT
关键字对查询中列出的所有列都有效。这是真的,但一般人不推荐它(没有性能差异*在某些特定情况下存在性能差异***)**。然而,MySQL 优化器为两者输出相同的查询,因此没有实际的性能差异。
更新
虽然 MySQL 确实对两个查询都应用了相同的优化,但实际上有一个区别:当DISTINCT
与LIMIT
子句结合使用时,MySQL 一旦找到足够的唯一行就停止。所以
SELECT DISTINCT
title
, series_number
FROM
programme_table
WHERE
title LIKE '$letter%'
实际上是最好的选择。