mysql - 从两个表创建一个表,其中数据在一个表中的行中

标签 mysql sql-insert

我有两个通过用户 ID 链接的表。我想从两个表中创建一个新表,从每个表中提取几个字段。在一个表中,每个用户 ID 只有一行,在另一个表中,每个用户有几行数据。

第一个表很简单 - 所有数据都在一行中。
但是,在第二个表中,数据按行排列,每个用户 ID 都有几行。我只想为每个用户 ID 找到其中的四行,然后将它们插入到我的表中的一列中。这是下面的代码,但它不起作用。我可以像这样嵌套子查询吗?

INSERT INTO new_table
select table1.ID, table1.user_email, table1.display_name, table2.meta-value (where table2.meta_key = ‘pet’), table2.meta-value (where table2.meta_key = ‘color'), table2.meta-value (where table2.meta_key = ‘location), table2.meta-value (where table2.meta_key = ‘house'),
from table_1, table2

最佳答案

试试这个:

INSERT INTO new_table
(SELECT 
    t1.ID, 
    t1.user_email, 
    t1.display_name, 
    (SELECT meta-value FROM table2 AS t2 WHERE t2.meta_key = 'pet' AND t2.user_id = t1.user_id), 
    (SELECT meta-value FROM table2 AS t2 WHERE t2.meta_key = 'color' AND t2.user_id = t1.user_id), 
    (SELECT meta-value FROM table2 AS t2 WHERE t2.meta_key = 'location' AND t2.user_id = t1.user_id), 
    (SELECT meta-value FROM table2 AS t2 WHERE t2.meta_key = 'house' AND t2.user_id = t1.user_id),
    FROM table_1 AS t1
)

但是,它没有经过测试,因为我没有找到有关表架构/数据的更多详细信息。希望这会有所帮助。

关于mysql - 从两个表创建一个表,其中数据在一个表中的行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39122027/

相关文章:

mysql - 在 MySQL 中同步两个数据库模式

php - 使用数组与另一个表的关系

php - SQL查询帮助请求

mysql 大表中的限制和偏移量

mysql插入自动递增但不插入行

mysql - 在现有记录中插入值。 sqlite 使用准备好的语句

php - Mysql 在列上选择唯一行

oracle - 是否可以在 Insert as select 语句上返回主键 - Oracle?

sql - 消息 102,级别 15,状态 1,第 3 行 ',' 附近的语法不正确

mysql - 在 VALUES 子句中执行语句 MYSQL