首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在连接两个表后更改默认空值?

如何在连接两个表后更改默认空值?
EN

Stack Overflow用户
提问于 2020-03-02 18:13:22
回答 2查看 61关注 0票数 2

在MySQL工作台中,我想左联接两个表,如下例所示:

代码语言:javascript
复制
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并连接这两个表:

代码语言:javascript
复制
#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

代码语言:javascript
复制
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中将空值更改为''

EN

回答 2

Stack Overflow用户

发布于 2020-03-02 18:15:03

考虑一下:

代码语言:javascript
复制
INSERT INTO table_c(employee_number, name, email, phone)
SELECT 
    a.employee_number,
    a.name,
    a.email,
    COALESCE(b.phone, '')
FROM table_a a
LEFT JOIN table_b b USING (employee_number);

备注:

  • COALESCE()null值转换为作为第二个参数给定的值(在这里,您需要空字符串)
  • 您实际上应该枚举要执行select操作的列,而不是使用select *
  • I还建议显式列出insert

的列

票数 1
EN

Stack Overflow用户

发布于 2020-03-02 18:14:53

使用COALESCE()

代码语言:javascript
复制
COALESCE(phone, '')

注意:在使用INSERT INTO时,请始终限定所有列名

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60486624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档