+ -
当前位置:首页 → 问答吧 → 求一SQL语句

求一SQL语句

时间:2011-12-09

来源:互联网

曾经问过一次,没有问全
 
A 表 ID CODE 机器表
B 表 ID CODE ADDTIME(维护时间) 机器维护信息表

B表中的数据 是 机器维护情况的记录,一个月可对一台机器 进行多次维护,即一台机器一个月可以有多条维护记录
现在想得到的是 本月 中尚未 维护的机器信息
A表数据量 大概 5万左右 
我能想到的语句是
SQL code

selec * from a  left join (select * from b where addtime >=start and addtime <=end) as b  where b.id is null 


(start end 都为程序计算出的时间戳 可以当做已知的)

想请问 有没有更好的办法,还有就是听说 数据大的时候 关联查询会很慢,想求证下是不是真的。谢谢各位了

作者: yun3948   发布时间: 2011-12-09

该回复于2011-12-09 13:22:50被管理员删除

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
#2楼 得分:0回复于:2011-12-09 13:31:29
大神们都哪去了,急啊

作者: yun3948   发布时间: 2011-12-09

selec * 
from a left join (select * from b where addtime >=start and addtime <=end) as b on a.code=b.code
where b.id is null 

作者: yun3948   发布时间: 2011-12-09

引用 3 楼 rucypli 的回复:

selec *
from a left join (select * from b where addtime >=start and addtime <=end) as b on a.code=b.code
where b.id is null


那个语句可以说是我凑出来的,mysql 里面有这样的写法么。或者说这样的写法叫什么的?有没有更好的?

作者: rucypli   发布时间: 2011-12-09

select * from 机器表 a where not exists (select 1 from 机器维护信息表 where ID=a.ID and 维护时间>='2011-12-01');

作者: yun3948   发布时间: 2011-12-09

引用 5 楼 acmain_chm 的回复:

select * from 机器表 a where not exists (select 1 from 机器维护信息表 where ID=a.ID and 维护时间>='2011-12-01');


感谢回答, 
我拼凑出来的那样的语句 即 left join 一个结果集, 有这样的写法没呢? 
嵌套查询的话 多大数据量的时候 会很慢?希望能给个回答,谢谢哈

作者: ACMAIN_CHM   发布时间: 2011-12-09