如何将给定的 SQL 查询转换为 SQL 服务器查询?
How do I convert given SQL query to SQL Server query?
我有一个 SQL 查询需要理解并转换为 SQL 服务器查询。这是 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)
根据我的理解,这意味着 如果 study_event table 没有给出 study_id,我正在插入行到 study_event table 给定 study_id 和 study_date. 这是正确的吗?
我正在尝试创建将执行相同操作的 SQL 服务器查询。从堆栈溢出中,这是我发现的:
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)
这将创建一个派生的 table,其中包含一行和两列 study_id
和 study_date
。
所以基本上 x.*
为您提供了 x
的整行,其中包含查询的两个原始参数,@study_id
和 @study_date
。
免责声明:
我有一个 SQL 查询需要理解并转换为 SQL 服务器查询。这是 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)
根据我的理解,这意味着 如果 study_event table 没有给出 study_id,我正在插入行到 study_event table 给定 study_id 和 study_date. 这是正确的吗?
我正在尝试创建将执行相同操作的 SQL 服务器查询。从堆栈溢出中,这是我发现的:
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)
这将创建一个派生的 table,其中包含一行和两列 study_id
和 study_date
。
所以基本上 x.*
为您提供了 x
的整行,其中包含查询的两个原始参数,@study_id
和 @study_date
。
免责声明: