php - Mysql唯一查询

标签 php mysql unique distinct

我有一个节目列表数据库,其中将一个节目所需的所有信息打包到一个表中(我应该将节目和剧集拆分成它们自己的)现在由于任何给定节目都有多个剧集,我希望显示主页只有标题名称在升序和选择的字母中。现在我知道如何进行基本查询,但这就是我所知道的

SELECT DISTINCT title FROM programme_table WHERE title LIKE '$letter%'

我知道我在用它。但是我使用的是动态图像加载,它需要一个序列号才能完整返回该图像,那么我如何才能让标题与众不同,同时从该标题加载序列号呢?

我希望我已经说清楚了。

感谢您的帮助

保罗

最佳答案

您可以用 DISTINCT 关键字替换 GROUP BY 子句。

SELECT
  title 
, series_number
FROM 
  programme_table 
WHERE title LIKE '$letter%'
GROUP BY 
  title
, series_number

目前还有另外两个有效选项:
Mohammad建议的选项是使用 HAVING 子句代替 WHERE 子句,这实际上不太理想:

WHERE 子句用于限制记录,也被查询优化器用来决定使用哪些索引和表。 HAVING是对最终结果集的“过滤器”,应用在ORDER BYGROUP BY之后,所以MySQL不能用它来优化查询。
所以 HAVING 不是最佳选择,您应该只在无法使用“WHERE”获得结果时才使用它。

quosoo指出 DISTINCT 关键字对查询中列出的所有列均有效。这是事实,但通常人们不推荐它(没有性能差异 *在某些特定情况下会有性能差异***)**。然而,MySQL 优化器为两者吐出相同的查询,因此没有实际的性能差异。

更新 尽管 MySQL 确实对这两个查询应用了相同的优化,但实际上还是有区别的:当 DISTINCTLIMIT 子句结合使用时,MySQL 会在找到足够的条件时立即停止独特的行。所以

SELECT DISTINCT
  title 
, series_number
FROM 
  programme_table 
WHERE 
  title LIKE '$letter%'

实际上是最好的选择。

关于php - Mysql唯一查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1507733/

相关文章:

php - 动态填充的下拉列表; $_POST 返回错误

php - MySQL 查询后,行显示空白值

mysql - 如何在 mysql 的 select 查询中省略具有空值的列?

c# - C#中唯一的字符串集

php - 将 PHP 变量传递给 Json

javascript - 加载 JQuery 后网页内容不显示

php - 修改SQL查询以过滤结果

php - 为什么 PDO::bindParam 这么慢?

mysql - SQL UPDATE 语句用另一个没有唯一标识符的表的值更新一个表

MYSQL - 查找不同的记录并按另一个字段长度排序