【问题标题】:MySQL DISTINCT function not workingMySQL DISTINCT 函数不起作用
【发布时间】:2015-01-29 18:57:11
【问题描述】:

使用 MySQL。以下 SQL 语句完美运行:

SELECT a.ID, a.DISPNAME, a.UNIT_TYPE, a.MODELNUM, a.DESCRIP, a.DATE_ADDED, b.TYP, c.FIRSTNAME, c.LASTNAME FROM jobs_engineering a INNER JOIN unit_types b ON a.UNIT_TYPE=b.ID INNER JOIN users c ON a.AEID=c.USERID ORDER BY a.DATE_ADDED DESC

但现在我只想要列 DISPNAME 的唯一记录,因为该列有多个重复值。我添加了DISTINCT 方法

SELECT a.ID, DISTINCT(a.DISPNAME), a.UNIT_TYPE, a.MODELNUM, a.DESCRIP, a.DATE_ADDED, b.TYP, c.FIRSTNAME, c.LASTNAME FROM jobs_engineering a INNER JOIN unit_types b ON a.UNIT_TYPE=b.ID INNER JOIN users c ON a.AEID=c.USERID ORDER BY a.DATE_ADDED DESC

但这不起作用。 MySQL 告诉我我的错误接近“DISTINCT”

我试过了:

 a.DISTINCT(DISPNAME)
 DISTINCT(DISPNAME)

这些都不起作用

我的错误在哪里?有人可以帮忙吗?

【问题讨论】:

  • distinctNOT 一个函数。它始终适用于选择列表中的所有列,并且必须紧跟select关键字
  • 好的。我为措辞道歉..我会更正标题。你对这个问题有什么见解吗?
  • 我指的不是你的标题。我指的是你使用它的方式。它不是一个函数。 distinct (col1), col2 没有意义 - 或者至少它与 distinct col1, col2 相同
  • 我尝试将 DISTINCT 作为开头。它执行了一个查询,但它仍然给了我所有的值。
  • 再次重申:distinctNOT 函数。它没有传递的“参数”。 ( 没用。

标签: mysql unique distinct


【解决方案1】:

DISTINCT 不是函数,而是查询装饰器。这意味着,如果您希望查询禁止所有重复项,请使用 SELECT DISTINCT 而不是 SELECT

现在重要的是,如果(并且如果)所有列都具有相同的值,则一行是另一行的副本。

您想要达到的目标通常可以解决

  • 在相关列上带有 GROUP BY 并拟合聚合函数
  • 使用具有LIMIT 1 的子查询

【讨论】:

  • 知道了。谢谢。我把GROUP BY a.DISPNAME 放在ORDER BY 之前,我得到了我需要的东西
猜你喜欢
  • 1970-01-01
  • 2013-09-15
  • 2020-04-05
  • 1970-01-01
  • 2012-10-21
  • 1970-01-01
  • 1970-01-01
  • 2014-08-04
  • 1970-01-01
相关资源
最近更新 更多