SQL 多个表关联查询!和删除!

比如:
要查询表一以“时间”为查询字段,查询一个时间范围内的结果,而且在表二以“状态”为查询字段,查询满足表一的时间范围之内,而且状态等于“0”的结果就显示出来。然后再删除。请高手教教。没有积分了,还是请帮忙。
表一的查询语句,(是SQL自动生成的我只知道这样搞)
SELECT *, 时间 AS Expr1
FROM yyksmx
WHERE (时间 > CONVERT(DATETIME, '2010-01-01 00:00:00', 102)) AND
(时间 < CONVERT(DATETIME, '2010-01-11 00:00:00', 102))
表二的查询语句:
SELECT *, 状态 AS Expr1
FROM yybrryjy
WHERE (状态 = '0')

结果就是要求,同时满足的情况下,就删除。表一,yyksmx中时间范围之内的数据。麻烦了。请高手指教一下。

SELECT yyksmx.*, 时间 AS Expr1
FROM yyksmx
inner join yybrryjy
on yybrryjy.住院序号=yyksmx .住院序号
WHERE (时间 > CONVERT(DATETIME, '2010-01-01 00:00:00', 102)) AND
(时间 < CONVERT(DATETIME, '2010-01-11 00:00:00', 102))
and yybrryjy.状态=0

你要删除哪个表,两个表都删除吗?追问

当两个条件同时满足时,删除yyksmx表时间段的内容

追答

你要删除yyksmx表时间段的内容?
这个时间段是一个列吗?
如果是的话,你要把这一列变为空的?
还是删除一行?

如果把时间短这一列变为空那就是修改了
如果是删除时间短所在的一行就是删除
你要哪种

估计你是要删除那一行了

delete yyksmx FROM yyksmx
inner join yybrryjy
on yybrryjy.住院序号=yyksmx .住院序号
WHERE (时间 > CONVERT(DATETIME, '2010-01-01 00:00:00', 102)) AND
(时间 < CONVERT(DATETIME, '2010-01-11 00:00:00', 102))
and yybrryjy.状态=0

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-28
两个表之间就没有什么关系么? 比如 表一的某字段 = (或者</>=/<=/<>) 表二的某字段追问

第个表的图片

第2个回答  2011-10-28
关联需要两张表中同一个字段进行连接,建立联系,就可以都查出
第3个回答  2011-10-28
你直接把两个表的结果贴出来吧。你的描述我没有看的太明白。我要看看两个表之间的关系。追问

怎么贴出来啊。 截图片可以吗。

追答

1.先SELECT 看看是否是你要删除的数据
select * from 表2
where state=0 and iD in
(
select iD from 表 1 where cast(时间 as date) between '2010-01-01' and '2010-01-11'
--你是否只要删除2010年1月份1号~11号的数据?
)

2.如果数据正确,删除

delete from 表2
where state=0 and Id in
(
select Id from 表 1 where cast(时间 as date) between '2010-01-01' and '2010-01-11'
--你是否只要删除2010年1月份1号~11号的数据?
)

追问

是的。如果我搞清楚了这删除语句,然后时间段我可以随便改了。

追答

用我写给你的SQL,看看查询出来的语句,是否是你需要删除的数据。ID是两个表的关联字段。
你这两个表有关联字段吗?