我在这个表中有多个具有相同名称的行,我想只显示每行中的一行。例如,使用以下数据:
| name | number |
+------+--------+
| exe | 1 |
| exe | 10 |
| exe | 2 |
| bat | 1 |
| exe | 3 |
| bat | 4 |
我希望看到以下结果:
| name | number |
+------+--------+
| exe | 16 |
| bat | 5 |
如何实现这一结果?
重复回复:我的问题只有1个表,JOIN ..ON命令在理解上造成混乱,我认为这个简单的问题可以帮助很多人!
答案 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 的操作,客户可以做很多工作。