【问题标题】:How to merge MySQL columns into one column if there are empty values in the table?如果表中有空值,如何将 MySQL 列合并为一列?
【发布时间】:2014-12-31 13:58:38
【问题描述】:

我想如果我通过显示图像来问你会更好。

这是我的people 表。如您所见,这是一个糟糕的设计理念。有些人有不止一个职业(作家/女演员),所以我将使用一个连接表来使其工作,并摆脱people 表。我的问题是,如何在不复制空值的情况下将所有这些值从 people 移动到我的 person 表中? (例如,people_id = 1 只包含导演姓名,其他为空。

以下查询也添加了空值。而且我也无法选择所有列。

INSERT INTO person (person_name)
          SELECT director_name
          FROM people
          WHERE people_id < 150000;

我的人表。我想在 person_name 列中将所有名称从人员复制到人员表。

【问题讨论】:

  • 这个查询有什么问题?您的查询将按您的意愿工作
  • “复制空值”是什么意思?如果您引用的空值是其他列中的值(“musician_name”、“translator_name”等),它们不会被您的查询复制,仅仅是因为您没有选择它们。跨度>
  • 各位,谢谢你们的cmets。戈登的回答解决了我的问题。我可能问的问题有点含糊。当我使用下面的查询时,一些 NULL 值被添加到 person_name 列中。

标签: mysql sql select insert


【解决方案1】:

大概你想比较NULL/blank/whatever:

INSERT INTO person (person_name)
      SELECT director_name
      FROM people
      WHERE people_id < 150000 AND
            director_name IS NOT NULL AND
            director_name <> '';

【讨论】:

    猜你喜欢
    • 2013-01-23
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 2021-06-01
    相关资源
    最近更新 更多