【问题标题】:Duplicate values wtih column changing based on select from another table基于从另一个表中选择的列更改的重复值
【发布时间】:2017-12-22 16:00:07
【问题描述】:

我正在尝试复制表 1 的行,对于从表 2 中选择的每个响应,将其中一列的值更改为表 2 中的结果

所以这是我从 table1 中选择来获取我想要复制的值:

SELECT DISTINCT * FROM table1 WHERE CODE = 'abcd'

回复:

Code     zone
abcd      1
abcd      2
abcd      3
abcd      4

并且我希望为来自下面选择的每个响应复制上述选择的所有结果

SELECT DISTINCT CODE AS code
FROM table2
WHERE CODE LIKE '%abcd%'

目标:

Code     zone
abcde      1
abcde      2
abcde      3
abcde      4
abcdef     1
abcdef     2
abcdef     3
abcdef     4
zabcd      1
zabcd      2
zabcd      3
zabcd      4

然后我想将这些值添加到 table1

【问题讨论】:

    标签: sql sql-server ssms sql-insert


    【解决方案1】:

    听起来你想要CROSS JOIN

    SELECT B.code, A.zone
    FROM (SELECT DISTINCT Code, zone 
          FROM table1 
          WHERE CODE = 'abcd') A
    CROSS JOIN (SELECT DISTINCT CODE AS code
                FROM table2
                WHERE CODE LIKE '%abcd%') B
    ;
    

    如果要在table1中插入此数据:

    INSERT INTO table1(code, zone)
    SELECT B.code, A.zone
    FROM (SELECT DISTINCT Code, zone 
          FROM table1 
          WHERE CODE = 'abcd') A
    CROSS JOIN (SELECT DISTINCT CODE AS code
                FROM table2
                WHERE CODE LIKE '%abcd%') B
    WHERE NOT EXISTS(SELECT 1 FROM table1
                     WHERE code = B.code
                     AND zone = A.zone)
    ;
    

    【讨论】:

    • 这是将这些行插入到 table1 中吗?
    • @Mennyg 不,不是
    • 这就是我的问题。我需要将此查询的结果(顺便说一句)添加到 table1
    • 好吧,这实际上不是问题
    猜你喜欢
    • 2020-08-09
    • 2018-09-04
    • 2019-02-14
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多