Sql 如何插入带有验证的记录
使用SQLServer2000 主表Sql 如何插入带有验证的记录,sql,sql-server,Sql,Sql Server,使用SQLServer2000 主表 ID Date Value 001 23-04-2009 200 001 24-04-2009 300 002 23-04-2009 250 002 24-04-2009 350 002 25-04-2009 250 .... 辅助表 ID Date Value 001 23-04-2009 200 001 24-04-2009 300 002 23-04-2009 250 002 24-04-2009 350
ID Date Value
001 23-04-2009 200
001 24-04-2009 300
002 23-04-2009 250
002 24-04-2009 350
002 25-04-2009 250
....
辅助表
ID Date Value
001 23-04-2009 200
001 24-04-2009 300
002 23-04-2009 250
002 24-04-2009 350
002 25-04-2009 250
002 26-04-2009 550
....
在主表中,我想从次表中插入一个数据(每个数据应从下一个日期开始为每个id插入)
若我在主表中插入辅助表数据,主表应该从下一个日期开始接受id
预期产量
ID Date Value
001 23-04-2009 200 'old record from master table
001 24-04-2009 300 'old record from master table
002 23-04-2009 250 'old record from master table
002 24-04-2009 350 'old record from master table
002 25-04-2009 250 'old record from master table
002 26-04-2009 550 'New Record from Secondary Table
下面提到的记录不会插入主表中,因为主表中id的日期可用
001 23-04-2009 200
001 24-04-2009 300
002 23-04-2009 250
002 24-04-2009 350
002 25-04-2009 250
如何查询插入具有验证(id和日期)的记录
需要SQL查询帮助吗
select s.*
from
(select id, date, value
from secondaryTable ) s ,
(
select id, max(date) as date
from mainTable
group by id ) a
where s.id = a.id and s.date>a.date
这个查询应该返回应该插入到主表中的所需行,我还没有测试这个查询,请原谅任何错误所以当插入第二行时,您想在主表中插入一行吗?或者在没有匹配的主行时停止辅助表上的插入?我知道英语不是你的母语,但你现在不清楚你想要什么,sorry@gbn,这不是一个英语语法网站,如果你不明白,就发一条类似“不清楚”的评论,而不是写责备的话……我只是想礼貌一点。现在,解决你的问题。它在s上显示错误,你能检查一下吗…@Gopal,第一眼,我发现s后面缺少逗号,你能试试吗。我也用逗号试过,它在“,”附近显示错误,语法不正确,你能检查一下吗…,不要鼓励错误使用隐式联接。隐式联接是sql反模式,它们几乎在20年前被显式连接所取代。它们会受到意外交叉联接的影响,并且维护起来更困难,特别是因为左联接隐式语法不可靠且已弃用,并且不应在同一查询中混合隐式联接和显式联接,否则可能会得到奇怪的结果。它们更难阅读和理解。我观察到隐式连接经常被不理解连接的人使用,他们也不真正理解他们的结果集。学习的人不应该暴露在这种不良做法之下。