[英]Inserting a row to a table using query result values from another table
我有一個存儲過程:
CREATE PROCEDURE MyProc
(
@Param1 [datetime],
@Param2 [nvarchar](20),
@Param3 [nvarchar](20),
@Param4 [nvarchar](20),
@Param5 [nvarchar](20),
)
AS
BEGIN
INSERT INTO MyTable1
(
Field1,
Field2,
Field3,
Field4,
Field5
)
SELECT
@Param1,
@Param2,
@Param3,
Field12,
'constantValue'
FROM MyTable2
WHERE Field13 = @Param4
END
我怎么可能改變存儲過程,以便它插入Field5
的MyTable1
不是constantValue
但另一個查詢的結果MyTable2
與最后一個參數( @Param5
)?
即:
FROM MyTable2
WHERE Field13 = @Param5
INSERT INTO MyTable1
(
Field1,
Field2,
Field3,
Field4,
Field5
)
SELECT
@Param1,
@Param2,
@Param3,
Field12,
(
select field_name from MyTable2 where Field13 = @Param5
)
FROM
MyTable2
WHERE
Field13 = @Param4
END
或者聲明一個新變量:
SET @newparam = (SELECT field_name FROM MyTable2 WHERE Field13 = @Param5 )
然后將此新參數插入到insert語句中。
CREATE PROCEDURE MyProc
(
@Param1 [datetime],
@Param2 [nvarchar](20),
@Param3 [nvarchar](20),
@Param4 [nvarchar](20),
@Param5 [nvarchar](20),
)
AS
BEGIN
INSERT INTO MyTable1
(
Field1,
Field2,
Field3,
Field4,
Field5
)
SELECT
@Param1,
@Param2,
@Param3,
Field12,
(SELECT thing_i_care_about FROM MyTable2 WHERE Field13 = @Param5)
FROM MyTable2
WHERE Field13 = @Param4
END
假設每個SELECT中有一行
SELECT
@Param1, @Param2, @Param3, Tp4.Field12, Tp5.Field12
NULL
FROM
MyTable2 Tp4
CROSS JOIN
MyTable2 Tp5
WHERE
Tp4.Field13 = @Param4 AND Tp4.Field13 = @Param5
JOIN根據您的期望而變化,例如FULL OUTER JOIN .. ON 1=1
如果任一查詢返回多於1行,則:
它可以通過以下不同的方式完成,在這兩種情況下,我認為我們應該考慮一個事情,如果返回的數據可能不止一個。
一種。
INSERT INTO MyTable1
(
Field1,
Field2,
Field3,
Field4,
Field5
)
SELECT
@Param1,
@Param2,
@Param3,
Field12,
(SELECT TOP 1 Column_Name FROM MyTable2 WHERE Field13 = @Param5)
FROM MyTable2
WHERE Field13 = @Param4
灣
DECLARE @Field13 VARCHAR(20)
SELECT TOP 1 @Field13 = FROM MyTable2 WHERE Field13 = @Param5
INSERT INTO MyTable1
(
Field1,
Field2,
Field3,
Field4,
Field5
)
SELECT
@Param1,
@Param2,
@Param3,
Field12,
@Field13
FROM MyTable2
WHERE Field13 = @Param4
在任何一種情況下都會成功,盡管“Field13 = @Param5”條件可能會顯示多個數據但會對第一個(TOP 1)數據起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.