Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何插入带有验证的记录_Sql_Sql Server - Fatal编程技术网

Sql 如何插入带有验证的记录

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

使用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
    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年前被显式连接所取代。它们会受到意外交叉联接的影响,并且维护起来更困难,特别是因为左联接隐式语法不可靠且已弃用,并且不应在同一查询中混合隐式联接和显式联接,否则可能会得到奇怪的结果。它们更难阅读和理解。我观察到隐式连接经常被不理解连接的人使用,他们也不真正理解他们的结果集。学习的人不应该暴露在这种不良做法之下。