[英]Fill more than one column with SELECT in statement
我想問一下,如果我在INSERT
語句中有SELECT
語句,如何同時將數據插入到一個以上的列中。 我想填寫下表:
|-------------------|-----------------|--------------|-----------------|
| TableName | ColName | Value | SQL_Statement |
|-------------------|-----------------|--------------|-----------------|
我有以下查詢,它只提交一個 Value 列:
SET @SQL_String = 'INSERT INTO #ResultTable(Value) SELECT ' + @ColName + ' FROM ' + @TableSchema + '.' + @TableName + ' WHERE ' + @ColName + ' = ''' + cast(@GuidArgument AS NVARCHAR(50)) + '''';
我需要填寫所有列,但我不知道如何編寫該查詢。 這是我需要的查詢的一些“偽代碼”:
INSERT INTO TableSchema
(
TableName,
ColName,
Value,
SQL_Statement
)
VALUES
(
@TableName,
@ColName,
[THAT LONG SELECT FROM QUERY ABOVE],
@SQL_Statement
);
請考慮我使用的是動態查詢。
謝謝你們!
PS:總結我的要求並不容易,任何編輯都非常感謝。
如果你想改變你的@SQL_String表達式,我們可以通過以下方式實現。 我希望這是你所期待的。
SET @SQL_String=
N'INSERT INTO #ResultTable
(
TableName,
ColName,
Value,
SQL_Statement
)
SELECT
'+@TableName+',
'+@ColName+',
(SELECT ' + @ColName + ' FROM ' + @TableSchema + '.' + @TableName + ' WHERE ' + @ColName + ' = ''' + cast(@GuidArgument AS NVARCHAR(50)) + '''),
'''+@SQL_Statement+''''
您不想在此處使用VALUES
關鍵字。 當你想從表中選擇一個值來插入它時,你必須使用insert into .. select ..
類似的東西:
Insert INTO TableName
(col1,
col2,
col3,
col4)
Select 'AStaticValue',
'AnotherStaticValue',
col1,
col4
FROM AnotherTable
WHERE SomeCondition = true
所以在你的情況下,它應該是這樣的:
INSERT INTO TableSchema
(
TableName,
ColName,
Value,
SQL_Statement
)
Select
@TableName,
@ColName,
ColumnNameFromYourQuery,
@SQL_Statement
From your-table where condition;
我的建議是運行兩個查詢:
1) SELECT 查詢
SET @SQL_String = 'INSERT INTO #ResultTable(Value) SELECT ' + @ColName + ' FROM ' + @TableSchema + '.' + @TableName + ' WHERE ' + @ColName + ' = ''' + cast(@GuidArgument AS NVARCHAR(50)) + '''';
2) 更新查詢
UPDATE TableSchema
SET TableName= @TableName, ColName= @ColName, SQL_Statement= @SQL_Statement
WHERE SQL_Statement=@SQL_Statement;
將靜態值添加到您的SELECT
查詢:
INSERT INTO TableSchema
SELECT @TableName
,@ColName
,col1
,col2
,colX
FROM WhateverTable
WHERE some_column = 'some_value'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.