Sql server 如何将给定的SQL查询转换为SQL Server查询?
我有一个SQL查询需要理解并转换为SQL Server查询。下面是SQL查询:Sql server 如何将给定的SQL查询转换为SQL Server查询?,sql-server,sql-update,sql-insert,database-migration,sql-merge,Sql Server,Sql Update,Sql Insert,Database Migration,Sql Merge,我有一个SQL查询需要理解并转换为SQL Server查询。下面是SQL查询: MERGE INTO study_event USING dual ON (study_id = :study_id) WHEN NOT MATCHED THEN INSERT (study_id, study_date) VALUES (:study_id, :study_date) 从我的理解来看,这意味着如果研究事件表没有给定研究id,我将插入行到具有
MERGE INTO study_event
USING dual
ON (study_id = :study_id)
WHEN NOT MATCHED THEN
INSERT (study_id, study_date)
VALUES (:study_id, :study_date)
从我的理解来看,这意味着如果研究事件表没有给定研究id,我将插入行到具有给定研究id和研究日期的研究事件表中。这是否正确
我正在尝试创建将执行相同操作的SQL Server查询。从堆栈溢出中,我发现:
INSERT INTO study_event(study_id, study_date)
SELECT x.*
FROM (VALUES(@study_id, @study_date)) as x(study_id, study_date)
WHERE NOT EXISTS (SELECT 1 FROM studies s1 WHERE s1.study_id = x.study_id)
我想我理解这个查询,但我不确定
SELECT x.*
是什么意思。此查询有效吗?x*表示什么?x
指的是values()
子查询创建的别名,如下所示:
FROM (VALUES(@study_id, @study_date)) as x(study_id, study_date)
这将创建一个包含一行两列的派生表study\u id
和study\u date
因此基本上,x.*
给出了x
中的整行,其中包含查询的两个原始参数,@study\u id
和@study\u date
免责声明:
x
指的是values()
子查询创建的别名,如下所示:
FROM (VALUES(@study_id, @study_date)) as x(study_id, study_date)
这将创建一个包含一行两列的派生表study\u id
和study\u date
因此基本上,x.*
给出了x
中的整行,其中包含查询的两个原始参数,@study\u id
和@study\u date
免责声明:SQL Server也支持
MERGE
。虽然在匹配时有一个MERGE
而没有一个,
在这种情况下似乎有点奇怪。SQL Server也支持MERGE
。虽然在匹配时有一个合并
而没有一个,
在这种情况下似乎有点奇怪。谢谢!我当时不明白,但我不想一直打扰你:)我很感激。现在我明白了!谢谢我当时不明白,但我不想一直打扰你:)我很感激。现在我明白了!