使用自联接更新不返回我正在寻找的结果

时间:2018-02-16 22:12:34

标签: mysql sql

大家好我需要做一个不包含null值的自连接。

创建表格:

CREATE TABLE t2 (
        col1 varchar(255),
        col2 varchar(255),
        col3 varchar(255),
        col4 varchar(255),
        col5 varchar(255),
        col6 varchar(255)
    );

--Populate the table:

    INSERT INTO t1 (col1, col2, col3, col4, col5, col6)
    VALUES
    ('1', '', 'new1', 'name1','',''),
    ('2', '', 'new2', 'name2','oldvalue1',''),
    ('3', '', 'new3', 'name3','',''),
    ('4', 'value1', 'new4', 'name4','','')
    ;

--Resulting in:

    | col1 |  col2  | col3 | col4  |    col5   | col6 | 
    | 1    |        | new1 | name1 |           |      |
    | 2    |        | new1 | name1 | oldvalue1 |      |
    | 3    |        | new1 | name1 |           |      |
    | 4    | value1 | new1 | name1 |           |      |

我的更新:

更新t2 AS A,t2 AS B
设置A.col6 = B.col3
其中B.col5 = A.col2;

但结果是:

    | col1 |  col2  | col3 | col4  |    col5   | col6 | 
    | 1    |        | new1 | name1 |           | new1 |
    | 2    |        | new1 | name1 | oldvalue1 | new1 |
    | 3    |        | new1 | name1 |           | new1 |
    | 4    | value1 | new1 | name1 |           |      |

我想要的是:

| col1 |  col2  | col3 | col4  |    col5   | col6 | 
| 1    |        | new1 | name1 |           |      |
| 2    |        | new1 | name1 | oldvalue1 | new1 |
| 3    |        | new1 | name1 |           |      |
| 4    | value1 | new1 | name1 |           |      |

我做错了什么?

我在mac上使用myspql和sequelpro

谢谢!

2 个答案:

答案 0 :(得分:0)

你尝试过吗?

更新b 设置b.col6 = a.col3 从t2 a     b.col5上的内连接t2 b = a.col2

答案 1 :(得分:0)

感谢所有帮助。我弄清楚我的问题是什么。在表中,null cess只是空白,他们没有包含" NULL"在他们中。一旦我更新了表格,就有了#34; NULL"在空白单元格中然后一切正常。再次感谢帮助我完成我的SQL旅程。