mysql - 选择不同的值,而其他值可以是任何值?

标签 mysql

不知道如何做到这一点,也不知道如何用措辞来找到答案。

假设我有SELECT id, name, title, stuff FROM table

ID、姓名和头衔可以是任何内容,没关系。但我只想选择其中内容不同的 1 列。所以..

1, Bob, Builder, Hammer
2, Tom, Train, Track
3, Charlotte, Spider, Web
1, Bob, Builder, Children
2, Tom, Train, Children
3, Charlotte, Spider, Children

所以我想选择前三个,并且只选择后三个中的一个。

最佳答案

你可以试试这个:

select
  max(id) as id,
  max(name) as name,
  max(title) as title,
  stuff
from
  table
group by
  stuff;

我们这里有聚合(group by),所有未在 GROUP BY 子句中枚举的字段都应该由某个聚合函数处理。 MAX 就是这些函数之一。这意味着以下内容。当 sql 引擎发现多行具有相同的 stuff 字段值时,它应该将它们折叠为单行。但其他字段具有不同的值。例如,字段名称应该采用三个值中的哪一个?我们应该指出 sql 引擎在这种情况下该怎么做。例如,通过指定聚合函数 MAX,我们强制 sql 引擎选择三个值中的最大值。在我们的例子中,字段名称将返回“Tom”。我们可以使用其他一些聚合函数,例如最小值在这种情况下并不重要。

第 2 版(更安全):

select
  t.id,
  t.name,
  t.title,
  t.stuff
from
  (select
    max(id) as id,
    stuff
   from 
     table
   group by
    stuff
  ) as gt
join
  table t on t.id = gt.id;

关于mysql - 选择不同的值,而其他值可以是任何值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9793830/

相关文章:

android - 有没有办法用我的 Json 数据设置可绘制文件夹中的图像,该数据包括可绘制文件夹中图像的名称

mysql - 如何在 MySQL 查询中进行正则表达式

php - MySQL 选择随机行 - rand() 性能

mysql - 基于 VMWare Openstack 的 Fedora Cloud Base - phpMyAdmin 错误 #2002

PHP 登录脚本无法正常工作

mysql - 添加具有不同 Collat​​e 的 Persistant 列

MySQL 在一个原子操作中更新两行

php - 使用另一个查询的结果查询 MySql 数据库

MySQL 在一个查询中将 SUM() 函数乘以字段

mysql - 使用mysql从文本字段中按数组值分组