我需要将2条记录合并为一条。
矿井表:
╔═════╦═══════╦═════╦═══════╗
║ id* ║ name ║price║ rank ║
╠═════╬═══════╬═════╬═══════╣
║ 0 ║ A ║ 12 ║ CAP ║
║ 1 ║ B ║ 32 ║ BAC ║
║ 2 ║ B ║ 13 ║ BAC ║
╚═════╩═══════╩═════╩═══════╝
和合并后(同一表NOT SELECT)
╔═════╦═══════╦═════╦═══════╗
║ id* ║ name ║price║ rank ║
╠═════╬═══════╬═════╬═══════╣
║ 0 ║ A ║ 12 ║ CAP ║
║ 1 ║ B ║ 45 ║ BAC ║
╚═════╩═══════╩═════╩═══════╝
寻找名称和等级相同的记录和SUM价格。
合并数据库,并删除第二个重复记录。
我需要使用Join语句来创建它,还是有更快的方法来执行此操作?
答案 0 :(得分:0)
SELECT name,
SUM (price), rank
FROM tablename
GROUP BY name, rank;
此查询为您提供所需的信息。欲了解更多信息: http://www.w3resource.com/sql/aggregate-functions/sum-with-group-by.php
答案 1 :(得分:0)
试试这个:
SELECT MIN(id),name,sum(price) as price,rank,
SUM (price)
FROM tablename
GROUP BY name, rank;
答案 2 :(得分:0)
试试这个,
select name,
SUM(price),
@rownum := @rownum + 1 AS rank
from your_table
cross join (select @rownum := 0) r
group by name
排名来自这篇帖子:select increment counter in mysql
编辑: 我尝试使用SQL小提琴 架构:
CREATE TABLE name_table
(
id int,
name varchar(5),
price decimal(10),
rank int
);
insert into name_table values(0, 'A', 12, 1);
insert into name_table values(1, 'B', 32, 2);
insert into name_table values(2, 'B', 13, 2);
查询:
select id,
name,
SUM(price),
@rownum := @rownum + 1 AS rank
from name_table
cross join (select @rownum := 0) r
group by name
结果:
id name price rank
0 A 12 1
1 B 45 2
答案 3 :(得分:0)
试试这个
我认为下面是一种可以实现输出的方法
SELECT name, SUM (price), rank FROM `yourtablename` GROUP BY name, rank;
答案 4 :(得分:0)
这似乎是你所追求的......
SELECT MIN(id) id
, name
, SUM(price) price
, rank
FROM my_table
GROUP
BY name
, rank;