对于多次出现的值,仅显示一行

时间:2015-07-07 21:12:01

标签: mysql sql

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

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

我希望看到以下结果:

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

如何实现这一结果?

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

2 个答案:

答案 0 :(得分:2)

您可以使用聚合函数:

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

以下是关于聚合函数的reference,这是使用示例数据的SQL Fiddle示例。

答案 1 :(得分:2)

尝试这样的事情:

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

让数据库返回您想要的结果,而不是返回大量的行,并在客户端进行折叠。无需数据库可以更有效地执行 way 的操作,客户可以做很多工作。