在MySQL工作台中,我想左联接两个表,如下例所示:
table_a:
---------------------------------------
employee_number name e_mail
---------------------------------------
1 Tom tom@mail.com
2 Ali ali@mail.com
3 Anna anna@mail.com
4 Clay clay@mail.com
---------------------------------------
table_b:
--------------------------
employee_number phone
2 45678964
3 79845275
--------------------------我创建了一个新表table_c并连接这两个表:
#create table_c:
CREATE TABLE table_c (
employye_number VARCHAR(255) NOT NULL,
name VARCHAR(255) DEFAULT '',
e_mail VARCHAR(255) DEFAULT '',
phone VARCHAR(255) DEFAULT ''
);
#perform join of the two tables:
INSERT INTO table_c
SELECT *
FROM table_a
LEFT JOIN table_b USING (employee_number);期望的输出如下所示。使用空字符串('')作为空值,而不是NULL。
table_c:
----------------------------------------------------
employee_number name e_mail phone
----------------------------------------------------
1 Tom tom@mail.com
2 Ali ali@mail.com 45678964
3 Anna anna@mail.com 79845275
4 Clay clay@mail.com
---------------------------------------------------但是,当我在MySQL中执行此操作时,employee 1和employee 4的电话值仍然为NULL。
我不希望仅使用COALESE()更改查询中的输出值,我希望该值在表中存储为'',而不是NULL。
有人知道如何在table_c中将空值更改为''吗
发布于 2020-03-02 18:14:53
使用COALESCE():
COALESCE(phone, '')注意:在使用INSERT INTO时,请始终限定所有列名
INSERT INTO table_c (employee_number, name, email, phone)
SELECT a.employee_number, a.name, a.email, COALESCE(b.phone, '') AS phone
FROM table_a a LEFT JOIN
table_b b
USING (employee_number);https://stackoverflow.com/questions/60486624
复制相似问题