【问题标题】:Is it possible to merge data with same id and different value into another table?是否可以将具有相同ID和不同值的数据合并到另一个表中?
【发布时间】:2022-12-17 21:05:09
【问题描述】:

我试图分离所有具有相同 ID 和不同值的数据,并将它们作为列添加到另一个表中。这就是我的意思,这是表“users_temp”的数据结构:

ID      user_pass user_nicename user_registered        meta_key         meta_value
1       user1       iamuser     2020-11-28 12:07:06   description   This is my description
1       user1       iamuser     2020-11-28 12:07:06   first_name    John
1       user1       iamuser     2020-11-28 12:07:06   last_name     Doe
1       user1       iamuser     2020-11-28 12:07:06   icon          icon_1
1       user1       iamuser     2020-11-28 12:07:06   theme         white
1       user1       iamuser     2020-11-28 12:07:06   gender        m

这就是我希望数据在“用户”表中的结构:

ID      user_pass user_nicename user_registered            description         first_name last_name  icon    theme  gender
1       user1       iamuser     2020-11-28 12:07:06   This is my description     John         Doe    icon_1  white  m

这就是我试图做的:

INSERT INTO users SELECT * FROM users_temp (CASE meta_key = 'description' THEN meta_value END),
(CASE meta_key = 'first_name' THEN meta_value END),
(CASE meta_key = 'last_name' THEN meta_value END),
(CASE meta_key = 'gender' THEN meta_value END),
(CASE meta_key = 'icon' THEN meta_value END),
(CASE meta_key = 'theme' THEN meta_value END)

如我所见,这是不正确的。但是,我怎样才能达到我所需要的呢?提前致谢!

【问题讨论】:

  • 您还没有发布用户表结构
  • @ErgestBasha 谢谢,我正在更新问题
  • 你应该先在线程stackoverflow.com/a/9668036/7174186中检查这个答案
  • @ErgestBasha 实际上,我已经发布了
  • @buithienquyet 谢谢!!

标签: mysql sql


【解决方案1】:

您可以使用条件聚合。

insert into users (ID ,
                  user_pass ,
                  user_nicename ,
                  user_registered ,
                  description ,
                  first_name ,
                  last_name ,
                  icon ,
                  theme ,
                  gender )
select ID,
       user_pass,
       user_nicename,
       user_registered,
       max(case when meta_key ='description' then meta_value end) as description,
       max(case when meta_key ='first_name' then meta_value end) as first_name,
       max(case when meta_key ='last_name' then meta_value end) as last_name,
       max(case when meta_key ='icon' then meta_value end) as icon,
       max(case when meta_key ='theme' then meta_value end) as theme,
       max(case when meta_key ='gender' then meta_value end) as gender
from users_temp
group by ID,user_pass,user_nicename,user_registered;

https://dbfiddle.uk/A5SoDh6E

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2021-07-16
    • 2021-09-02
    • 2020-04-17
    相关资源
    最近更新 更多