Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:在一列中插入多个不同的硬编码值_Sql_Sql Server_Tsql_Select_Sql Insert - Fatal编程技术网

SQL:在一列中插入多个不同的硬编码值

SQL:在一列中插入多个不同的硬编码值,sql,sql-server,tsql,select,sql-insert,Sql,Sql Server,Tsql,Select,Sql Insert,我还没有找到解决这个问题的办法。我想插入具有2个或更多不同硬编码值的多行,但也要插入从另一个表中获取的数据 示例:我想向另一个表中ID为“0”的用户的表中添加2项,而不运行2个查询 这就是我到目前为止所做的: INSERT INTO DB.dbo.Table WITH(ROWLOCK, XLOCK) ( col1, col2, col3, col4 ) SELECT DISTINCT customer_id, hardcoded_value1,

我还没有找到解决这个问题的办法。我想插入具有2个或更多不同硬编码值的多行,但也要插入从另一个表中获取的数据

示例:我想向另一个表中ID为“0”的用户的表中添加2项,而不运行2个查询

这就是我到目前为止所做的:

INSERT INTO
  DB.dbo.Table WITH(ROWLOCK, XLOCK) (
    col1,
    col2,
    col3,
    col4
  )
SELECT
  DISTINCT customer_id,
    hardcoded_value1,
    constant1,
    constant2
FROM
  DB.dbo.Other_Table
WHERE
  ID = '0';

您可以
交叉连接
您的
使用表值构造函数选择
查询,该表值构造函数保存多个具有harcoded值的记录。这将为查询返回的每一行生成表值构造函数中提供的行数

INSERT INTO
  DB.dbo.Table WITH(ROWLOCK, XLOCK) (
    col1,
    col2,
    col3,
    col4
  )
SELECT
  DISTINCT t.customer_id,
    x.hardcoded_value,
    t.constant1,
    t.onstant2
FROM DB.dbo.Other_Table t
CROSS JOIN (VALUES ('harcoded 1'), ('harcoded 2')) as x(hardcoded_value)
WHERE t.ID = '0';

您可以
交叉连接
您的
使用表值构造函数选择
查询,该表值构造函数保存多个具有harcoded值的记录。这将为查询返回的每一行生成表值构造函数中提供的行数

INSERT INTO
  DB.dbo.Table WITH(ROWLOCK, XLOCK) (
    col1,
    col2,
    col3,
    col4
  )
SELECT
  DISTINCT t.customer_id,
    x.hardcoded_value,
    t.constant1,
    t.onstant2
FROM DB.dbo.Other_Table t
CROSS JOIN (VALUES ('harcoded 1'), ('harcoded 2')) as x(hardcoded_value)
WHERE t.ID = '0';

我无法从你的问题中看出不同价值观的基础是什么。您可以使用
CASE
语句根据某些条件插入不同的硬编码值:

INSERT INTO
  DB.dbo.Table WITH(ROWLOCK, XLOCK) (
    col1,
    col2,
    col3,
    col4
  )
SELECT
  DISTINCT customer_id,
    CASE WHEN Condition1 THEN hardcoded_value1
         WHEN Condition2 THEN hardcoded_value2
         ...
    END,
    constant1,
    constant2
FROM
  DB.dbo.Other_Table
WHERE
  ID = '0';

我无法从你的问题中看出不同价值观的基础是什么。您可以使用
CASE
语句根据某些条件插入不同的硬编码值:

INSERT INTO
  DB.dbo.Table WITH(ROWLOCK, XLOCK) (
    col1,
    col2,
    col3,
    col4
  )
SELECT
  DISTINCT customer_id,
    CASE WHEN Condition1 THEN hardcoded_value1
         WHEN Condition2 THEN hardcoded_value2
         ...
    END,
    constant1,
    constant2
FROM
  DB.dbo.Other_Table
WHERE
  ID = '0';

有什么问题吗?您看到“硬编码的\u值1”,我希望每个查询不仅有1个硬编码的值,而且col2有多个硬编码的值,而无需对每个硬编码的值运行多次查询。有什么问题吗?您看到“硬编码的\u值1”,我不希望每个查询只有1个硬编码的值,但是col2有多个硬编码值,而不需要对每个硬编码值运行多次查询。非常感谢,这似乎是我需要的东西。:)非常感谢,这似乎是我需要的东西。:)