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: 那就需要去重算法了,我给你一个去重的小例子吧:
大约 2 年之前 回复
gdragon_21
gdragon_21 回复little_how: 那如果像biao2这种的表有很多个(因为有好多台设备,每台都要采集同样的参数),这样一个个写会不会很麻烦。还是说我建的表缺少关联的东西,或是有什么好的思路能简单的展示出总表的效果呢?
大约 2 年之前 回复
w172087242
w172087242 其他数据库可以根据各自的分页实现。
大约 2 年之前 回复
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合在一起,对吗?
大约 2 年之前 回复
w172087242
w172087242 然后去重后的结果来作为t2,和我给你写的第一条整合就ok了
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
SQL 取最新时间,当天的记录
把表中所有“名称”的最后一次发生的最后一条数据取出来,最后发生的时间由日期来判断 名称    金额     日期a        1.2   07-6-12   a        1.1   07-6-11 b        3.5   07-6-10 b        4.0   07-8-21c        0.5   07-1-11c        1.5   08-3-11 
SQL学习笔记[7] - 怎样在一个表里筛选出每一个对象的时间最新的一条记录
怎样在一个表里筛选出每个对象的时间最新的一条记录
数据库的一个表里筛选出每一人的时间最新的一条记录
-- 方法1 select a.*  from table1 a  where not exists(select 1                   from table1 b                   where b.name=a.name and b.gdtime>a.gdtime) -- 方法2 select a.*  from table1 a
SQL:多表关联取最大日期的那条记录
作者:iamlasong 1、需求 两个表,投递记录表和封发开拆记录表,现在想知道投递日期距最后一次封发日期天数分布情况。 对这个需求,需要先查询出投递明细,同时要知道对应的邮件最后一次封发情况,如机构、日期等 2、明细查询 考虑到一天可能封发多次,所以取日期和时间都是最大的那条,语句如下: select * from tb_evt_bag_mail_rel
SQL基础:使用SQL从表中取记录
SQL的主要功能之一是实现数据库查询。如果你熟悉Internet 引擎,那么你已经熟悉查询了。你使用查询来取得满足特定条件的信息。例如,如果你想找到有ASP信息的全部站点,你可以连接到 Yahoo!并执行一个对Active Sever Pages的搜索。在你输入这个查询后,你会收到一个列表,表中包括所有其描述中包含搜索表达式的站点。    多数Internet 引擎允许逻辑查询。在逻辑查询中,你可
如何用一个SQL语句查询多个表的记录数
<br />sql语句如下:<br />select t1.num1,t2.num2 from <br />  (select count(*) num1 from table1) t1,<br />  (select count(*) num2 from table2) t2<br /> <br />如果要显示这两张表中记录数的总和就是<br />select t1.num1,+t2.num2 from <br />  (select count(*) num1 from table1) t1,<br /
从表中取20-30条记录的SQL语句
mysql的方法 mysql> select * from student limit 20,10; +-----+-----------+------+-------+------+ | sid | studentid | age | name | sex | +-----+-----------+------+-------+------+ | 21 | 00010014
sql题
1.一道SQL语句面试题,关于group by 表内容: 2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-05-10 负 2005-05-10 负 如果要生成下列结果, 该如何写sql语句? 胜 负 2005-05-09 2 2 2005-05-10 1 2 -------
数据库练习题(取出tb_send表中日期(SendTime字段)为当天的所有记录)
请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为datetime型,包含日期与时间)。drop table if exists datetimecompare;create table datecompare(eid bigint(20) not null auto_increment comment '主键',SendTime datetime def
从数据库表中取出最后插入的几条数据的SQL语句。
select s.id, s.userid, s.shrdm,s.shrmc, s.zhfwtime from (select * from his_shr order by zhfwtime desc) s where rownum <= 10 and s.userid = K0000100001