【问题标题】:Display only one row for values that appear multiple times对于多次出现的值,只显示一行
【发布时间】:2015-07-07 21:12:00
【问题描述】:

我在这个表中有多个同名的行,我只想显示每个行中的一个。例如,使用以下数据:

| name | number |
+------+--------+
| exe  |   1    |
| exe  |   10   |
| exe  |   2    |
| bat  |   1    |
| exe  |   3    |
| bat  |   4    |

我希望看到以下结果:

| name | number | 
+------+--------+
| exe  |  16    |
| bat  |  5     |

我怎样才能达到这个结果?

重复回复:我的问题只有一张表,JOIN ..ON 命令造成理解上的混乱,我认为这个简单的问题可以帮助很多人!

【问题讨论】:

标签: mysql sql


【解决方案1】:

试试这样的:

  SELECT t.`name`, SUM(t.`number`) AS `number`
    FROM mytable t
   GROUP BY t.`name`
   ORDER BY `number` DESC

让数据库返回您想要的结果,而不是返回大量行,然后在客户端折叠它们。客户有很多工作要做,而无需做数据库可以更有效地做的事情。方式

【讨论】:

    【解决方案2】:

    您可以为此使用聚合函数:

    SELECT name, SUM(number) AS total
    FROM myTable
    GROUP BY name;
    

    这是一个关于聚合函数的 reference,这是一个使用您的示例数据的 SQL Fiddle 示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      • 2022-08-10
      • 1970-01-01
      • 2021-05-28
      • 2023-04-04
      相关资源
      最近更新 更多