簡體   English   中英

在語句中使用 SELECT 填充多於一列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM