【问题标题】:CREATE TABLE... SELECT combining two MySQL tables and NULL valuesCREATE TABLE... SELECT 组合两个 MySQL 表和 NULL 值
【发布时间】:2012-11-16 21:59:37
【问题描述】:

我正在使用它来连接两个表(这里省略了一些字段)。原始表中的所有字段都定义为 VARCHAR,NOT NULL,默认为 ''。

  CREATE TABLE newtable
  SELECT
     table1.field1,
     table1.field2,
     ...
     table2.field1,
     table2.field2,
     ...
 FROM
    table1
 LEFT JOIN table2 ON table1.id = table2.id

连接本身正在工作,但是,表 1 有一些不在表 2 中的行。当我需要它们为空字符串时,表 2 中的字段被添加为这些条目的 NULL。创建表时有没有办法做到这一点?

【问题讨论】:

    标签: mysql select null create-table


    【解决方案1】:

    如果您希望 table2 中的列为 '' ..put an nvl ...这在 oracle 中有效

    CREATE TABLE newtable as 
      SELECT
         table1.field1,
         table1.field2,
         ...
         nvl(table2.field1,''),
         nvl(table2.field2,''),
         ...
     FROM
        table1
     LEFT JOIN table2 ON table1.id = table2.id
    

    【讨论】:

      【解决方案2】:
      IFNULL(table1.field1,'') AS table1_field1,
      

      IFNULL 如果值不为空,则保留该值,否则将其替换为第二个参数,在您的情况下为空字符串

      【讨论】:

      • 直到我在行后添加了一个逗号后才起作用。然后它工作并导入了数据,但现在列名是整个语句 - IFNULL(table1.field1,'') 等等。
      • 创建别名:IFNULL(table1.field1,'') as desiredColumnName,
      • 这是一个提示,可以引导您找到解决方案,而不是复制粘贴工作解决方案。无论如何,我已经更新了语句以使列获得有意义的名称
      猜你喜欢
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 2022-12-02
      • 1970-01-01
      相关资源
      最近更新 更多