现在我有一个表,里面记录了产品的测量数据,一次测量会产生多个项(如电流,电压和频率),但是一组数据的测量日期是一样的。基本如下产品编号 测试项 数据 测试日期
-----------------------------------------------
1 电流 10.3 2009-12-12 10:00:00
1 电压 3.5 2009-12-12 10:00:00
1 频率 50 2009-12-12 10:00:00
2 电流 11.3 2009-12-12 21:00:00
2 电压 3.8 2009-12-12 21:00:00
2 频率 49 2009-12-12 21:00:00
1 电流 1.9 2009-12-11 12:00:00
1 电压 3.4 2009-12-11 12:00:00
1 频率 43 2009-12-11 12:00:00当一个产品不合格的时候,就会去多次测量,然后把数据再次写入这个表,比如1号,就测量了两次
当要导出数据的时候,我只需要最新的测量数据即可(即测试日期靠后的数据)
产品编号 测试项 数据 测试日期
1 电流 10.3 2009-12-12 10:00:00
1 电压 3.5 2009-12-12 10:00:00
1 频率 50 2009-12-12 10:00:00
2 电流 11.3 2009-12-12 21:00:00
2 电压 3.8 2009-12-12 21:00:00
2 频率 49 2009-12-12 21:00:00现在我的问题是,有没有比较好的方式,可以快速的取到这些数据?
我的数据库是My SQL 5.1.30-community
-----------------------------------------------
1 电流 10.3 2009-12-12 10:00:00
1 电压 3.5 2009-12-12 10:00:00
1 频率 50 2009-12-12 10:00:00
2 电流 11.3 2009-12-12 21:00:00
2 电压 3.8 2009-12-12 21:00:00
2 频率 49 2009-12-12 21:00:00
1 电流 1.9 2009-12-11 12:00:00
1 电压 3.4 2009-12-11 12:00:00
1 频率 43 2009-12-11 12:00:00当一个产品不合格的时候,就会去多次测量,然后把数据再次写入这个表,比如1号,就测量了两次
当要导出数据的时候,我只需要最新的测量数据即可(即测试日期靠后的数据)
产品编号 测试项 数据 测试日期
1 电流 10.3 2009-12-12 10:00:00
1 电压 3.5 2009-12-12 10:00:00
1 频率 50 2009-12-12 10:00:00
2 电流 11.3 2009-12-12 21:00:00
2 电压 3.8 2009-12-12 21:00:00
2 频率 49 2009-12-12 21:00:00现在我的问题是,有没有比较好的方式,可以快速的取到这些数据?
我的数据库是My SQL 5.1.30-community
select * from tablename t1 where not exists
(select 1 from tablename where 产品编号=t1.产品编号 and 测试日期>t1.测试日期);
from 一个表 a
where not exists (select 1 from 一个表
where 产品编号=a.产品编号 and 测试项=a.测试项
and 测试日期>a.测试日期)
本质是不是相当于做了一个自连接,然后选择出日期最大的数据?
当你 where 产品编号='xxxx' and 测试项 =yyy 可以用这个 索引1
当你 where 测试项 =yyy 则无法使用 索引1