tabA
filed1 filed2 filed3 filed4
f1Va null null f4Va
f1Va null f3Vb null
f1Va f3Vc null null需求:
1、找出filed1内容相同
2、将任意一行null的字段,填上其他行,同列的非null的字段
3、保留填充完整的行,删除其他提供数据的行
上述数据希望返回:
filed1 filed2 filed3 filed4
f1Va f3Vc f3Vb f4Va解释:
第一步:找到filed1相同的内容,有三条
f1Va null null f4Va
f1Va null f3Vb null
f1Va f3Vc null null第二步:
第一条记录的filed2字段为null,找到第三条记录的filed2字段非空,然后用该字段填充第一行中filed2字段
第一条记录的filed3字段为null,找到第二条记录的filed2字段非空,然后用该字段填充第一行中filed3字段
第一条记录的filed4字段非null,不处理第三步:
删除第二条记录和第三条记录,保留第一条记录。
filed1 filed2 filed3 filed4
f1Va null null f4Va
f1Va null f3Vb null
f1Va f3Vc null null需求:
1、找出filed1内容相同
2、将任意一行null的字段,填上其他行,同列的非null的字段
3、保留填充完整的行,删除其他提供数据的行
上述数据希望返回:
filed1 filed2 filed3 filed4
f1Va f3Vc f3Vb f4Va解释:
第一步:找到filed1相同的内容,有三条
f1Va null null f4Va
f1Va null f3Vb null
f1Va f3Vc null null第二步:
第一条记录的filed2字段为null,找到第三条记录的filed2字段非空,然后用该字段填充第一行中filed2字段
第一条记录的filed3字段为null,找到第二条记录的filed2字段非空,然后用该字段填充第一行中filed3字段
第一条记录的filed4字段非null,不处理第三步:
删除第二条记录和第三条记录,保留第一条记录。
解决方案 »
- mysql分组问题
- 服务器的数据库突然坏了,进不了,是什么问题
- 查询商品销售统计年报
- 远程查询数据库,中文显示乱码!
- 查询数据库得到数值,如果数值是0.0,0.00,0.000......等则显示为0,如果是8.0,8.00,8.000......等则显示为8,怎样做?就是去掉数字末尾的0
- 问一个关于sql语句的问题?
- mysql同步配置成功后,如何实现读操作的分流?
- 关于在c中用mysql的问题,挺急得,帮帮忙
- 请问有没有办法把两条查询出来的记录作为一条sql拼接?
- windows安装mysql后,启动服务提示“本地计算机上的mysql服务启动后停止……”
- 请教个问题,为什么我们的项目字符串都使用blob
- 求个MYSQL语句
select f1, max(f2), max(f3), max(f4) from tabA group by f1;mysql> create table tabA(f1 varchar(4), f2 varchar(4), f3 varchar(4), f4 varchar(4));
Query OK, 0 rows affected (0.13 sec)mysql> insert into tabA values('f1Va', null, null, 'f4Va');
Query OK, 1 row affected (0.00 sec)mysql> insert into tabA values('f1Va', null, 'f3Vb', null);
Query OK, 1 row affected (0.00 sec)mysql> insert into tabA values('f1Va', 'f3Vc', null, null);
Query OK, 1 row affected (0.00 sec)mysql> select f1, max(f2), max(f3), max(f4) from tabA group by f1;
+------+---------+---------+---------+
| f1 | max(f2) | max(f3) | max(f4) |
+------+---------+---------+---------+
| f1Va | f3Vc | f3Vb | f4Va |
+------+---------+---------+---------+
1 row in set (0.03 sec)mysql> create table tabAA as select f1, max(f2), max(f3), max(f4) from tabA group by f1;
Query OK, 1 row affected (0.14 sec)
Records: 1 Duplicates: 0 Warnings: 0mysql> select * from tabAA;
+------+---------+---------+---------+
| f1 | max(f2) | max(f3) | max(f4) |
+------+---------+---------+---------+
| f1Va | f3Vc | f3Vb | f4Va |
+------+---------+---------+---------+
1 row in set (0.00 sec)
mysql> alter table tabA rename to tabA2;
Query OK, 0 rows affected (0.05 sec)mysql> alter table tabAA rename to tabA;
Query OK, 0 rows affected (0.03 sec)这样你就能得到新的tabA了。
select f1, max(f2), max(f3), max(f4) from tabA group by f1;多简单
f1Va null f3Vb null
f1Va null f4Vb null
f1Va f3Vc null null这样的数据,第二行不要啦?
f1Va null f3Vb null
f1Va null f4Vb null
这种情况用f4Vb,替换,f3Vb或者用f3Vb替换f4Vb都行。
select f1, max(f2), max(f3), max(f4) from tabA group by f1;