a表 有id、starttime(timestamp时间类型)、endtime(timestamp时间类型)等b表有id、starttime(timestamp时间类型)、endtime(timestamp时间类型)等两表id是一样的 时间可能有交集求sql语句:将a表记录删除 条件是b表没有任何记录的时间在a表的时间范围内(无交集) 以a.id = b.id匹配举例:a表1 1001 2012-10-10 10:10:10 2012-10-10 10:20:10 2 1001 2012-10-10 10:30:10 2012-10-10 10:40:10 b表1 1001 2012-10-10 10:05:10 2012-10-10 10:11:00
这样的话 a表第二条记录将删除PS:效率越高越好 因为数据可能有几万甚至几十万条 而且这个操作很频繁谢谢..........
这样的话 a表第二条记录将删除PS:效率越高越好 因为数据可能有几万甚至几十万条 而且这个操作很频繁谢谢..........
解决方案 »
- 一个MYSQL存储过程
- 关于LINUX MYSQL的入门级问题
- 求sql语句
- 有谁知道tinyint的size表示什么意思,我发现tinyint(4) tinyint(80)都是一样的。。才8个字节。。。。。。size的大小说明什么呢?
- 虚拟表是什么
- 急:SQL统计问题
- mssql 转mysql自定义函数的问题
- mysql4.0.25是否支持select * table where not exists ()
- 能不能计算出表中某一字段相同的记录的某个字段的总和?
- 关于postgresql的连接(linux下c)
- 困扰了我N天的大问题
- Mysql float类型存放超过百万的数字会自动变成整数并且在个位数上进行四舍五入
a表1 1001 2012-10-10 10:10:10 2012-10-10 10:20:10 2 1001 2012-10-10 10:30:10 2012-10-10 10:40:10 b表1 1001 2012-10-10 10:05:10 2012-10-10 10:11:00 2 1001 2012-10-10 10:35:10 2012-10-10 10:41:00
你的语句 这样a的第二条记录会删掉不? 我等下试试
delete from A where exists(select 1 from B where A.id=B.id and (A.starttime>B.endtime or A.endtime<B.starttime));
a表1 1001 2012-10-10 10:10:10 2012-10-10 10:20:10 2 1001 2012-10-10 10:30:10 2012-10-10 10:40:10 b表1 1001 2012-10-10 10:05:10 2012-10-10 10:11:00 2 1001 2012-10-10 10:45:10 2012-10-10 10:51:00
从A中取出来每一条数据和B比较 如果存在 则删除
谢谢各位...