mysql - SQL 查询通过使用不同的特征在一列中添加值来插入新列

标签 mysql sql distinct-values

我有一个包含三列 (a,b,c) 的表,我需要通过使用列 a 和 b 的不同特征来创建一个新列“d”。

a  b  c
1  p  2
1  p  3 
2  q  4
1  q  2
2  r  4
2  r  2
1  p  2 

我需要如下答案,其中 d 是 a 和 b 的唯一列的总和

a b c d
1 p 2 7
1 p 3 7
2 q 4 4
1 q 2 2
2 r 4 6
2 r 2 6
1 p 2 7

d列的结果是,

对于不同的(a & b), 然后,添加 c 的值。 然后在 d 列中插入值(匹配不同的值)

最佳答案

你可以尝试在子查询中使用 SUMgroup by ab 列,然后 self 加入

TestDLL

create table t(
   a int,
   b varchar(5),
   c int
);

insert into t values (1,'p',2);
insert into t values (1,'p',3);
insert into t values (2,'q',4);
insert into t values (1,'q',2);
insert into t values (2,'r',4);
insert into t values (2,'r',2);
insert into t values (1,'p',2);

查询

SELECT t1.*,t2.d 
FROM T t1 INNER JOIN (
    SELECT a,b,SUM(c) d
    FROM T
    GROUP BY a,b
) t2 on t1.a = t2.a and t1.b=t2.b 

[结果]:

| a | b | c | d |
|---|---|---|---|
| 1 | p | 2 | 7 |
| 1 | p | 3 | 7 |
| 2 | q | 4 | 4 |
| 1 | q | 2 | 2 |
| 2 | r | 4 | 6 |
| 2 | r | 2 | 6 |
| 1 | p | 2 | 7 |

sqlfiddle

关于mysql - SQL 查询通过使用不同的特征在一列中添加值来插入新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51532864/

相关文章:

mysql - EAV是 'bad',但是类表继承的可维护性如何呢?

ios - 如何在 iOS 中显示来自 Sqlite 表的不同值?

mysql - LEFT JOIN 但有来自父表的附加行

mysql - 我有主从表,我想复制它们

mysql - sql : combining 2 query to give 1 resultset

php - 广告系统提示

mysql - 内连接返回重复记录

sql - 是否可以从 MSSQL 中的事务隔离级别设置 ROWLOCK 表提示?

search - 如何在 solr 的多值字段中添加不同的值

arrays - 如何从 Typescript 中的数组获取不同的值