2 gdragon 21 gdragon_21 于 2016.04.25 15:41 提问

新手求助:sql语句,从多个表中取出最新时间的记录,组成一个新表

图片说明

2个回答

w172087242
w172087242   Ds   Rxr 2016.04.25 15:51

mysql的实现:
insert into zongbiao(id, name ,vd,co2,wendu,time) select t1.id,t1.name,t1.vd,t2.co2,t2.wendu,t2.time from biao1 t1 join biao2 t2 on(t1.id=t2.id)
order by t2.time desc limit 1;

w172087242
w172087242 回复gdragon_21: 那就需要去重算法了,我给你一个去重的小例子吧:
一年多之前 回复
gdragon_21
gdragon_21 回复little_how: 那如果像biao2这种的表有很多个(因为有好多台设备,每台都要采集同样的参数),这样一个个写会不会很麻烦。还是说我建的表缺少关联的东西,或是有什么好的思路能简单的展示出总表的效果呢?
一年多之前 回复
w172087242
w172087242 其他数据库可以根据各自的分页实现。
一年多之前 回复
w172087242
w172087242   Ds   Rxr 2016.04.25 16:09

1.mysql和oracle通用版

create table loginfo(
id int primary key auto_increment, -- 主键
userId int not null, -- 用户id
loginTime timestamp -- 登录时间
);
insert into loginfo(userid, loginTime) values (1,'2015-01-12 14:36:20');
insert into loginfo(userid, loginTime) values (1,'2015-01-13 14:36:20');
insert into loginfo(userid, loginTime) values (1,'2015-01-13 14:46:20');
insert into loginfo(userid, loginTime) values (2,'2015-01-12 14:36:20');
insert into loginfo(userid, loginTime) values (2,'2015-01-13 14:36:20');
insert into loginfo(userid, loginTime) values (3,'2015-01-12 14:36:20');
insert into loginfo(userid, loginTime) values (4,'2015-01-12 14:36:20');
insert into loginfo(userid, loginTime) values (4,'2015-01-13 14:36:20');
insert into loginfo(userid, loginTime) values (4,'2015-01-14 14:36:20');
insert into loginfo(userid, loginTime) values (4,'2015-01-15 14:36:20');
insert into loginfo(userid, loginTime) values (5,'2015-01-12 14:36:20');
insert into loginfo(userid, loginTime) values (5,'2015-01-13 14:36:20');

-- 查询最后登录的时间
select * from loginfo t1 where loginTime = (select max(loginTime) from loginfo t2 where t1.userid=t2.userid);
-- 查询最早登录时间
select * from loginfo t1 where loginTime = (select min(loginTime) from loginfo t2 where t1.userid=t2.userid);

2.oracle去重思路
可以利用oracle的rowid进行去重

这样你就可以根据我的小例子来对机器id进行去重了。

gdragon_21
gdragon_21 回复little_how: 你的意思是,我把我的那些biao2,3,4...的记录都放在一张表,就相当于总共有2张表,第2张表去重后再和biao1合在一起,对吗?
一年多之前 回复
w172087242
w172087242 然后去重后的结果来作为t2,和我给你写的第一条整合就ok了
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!