Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从两个表中创建一个表,其中数据位于一个表中的行中_Mysql_Sql Insert - Fatal编程技术网

Mysql 从两个表中创建一个表,其中数据位于一个表中的行中

Mysql 从两个表中创建一个表,其中数据位于一个表中的行中,mysql,sql-insert,Mysql,Sql Insert,我有两个由用户ID链接的表。我想从这两个表中创建一个新表,从每个表中提取几个字段。在一个表中,每个用户ID只有一行,在另一个表中,每个用户有几行数据 第一个表格很简单-所有数据都在一行中。 但是,在第二个表中,数据是按行排列的,其中每个用户ID有几行。我只想为每个用户ID找到其中的四行,然后将它们插入到表中的一列中。这是下面的代码,但它不起作用。我可以像这样嵌套子查询吗 INSERT INTO new_table select table1.ID, table1.user_email, tabl

我有两个由用户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
)

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

您可以使用查询加入:

INSERT INTO new_table
select table1.ID, table1.user_email, table1.display_name, table3.meta-value, table4.meta-value, table5.meta-value, table6.meta-value
from table_1 inner join
(select ID, meta_value from table2 where meta_key='pet') as table3 inner join
(select ID, meta_value from table2 where meta_key='color') as table4 inner join
(select ID, meta_value from table2 where meta_key='location') as table5 inner join
(select ID, meta_value from table2 where meta_key='house') as table6;

我让它工作了。我不知道这比其他建议好还是坏

 INSERT INTO new_table
 SELECT t1.ID,  t1.user_email,  t1.display_name, 
        GROUP_CONCAT(IF(m.meta_key = 'pet_field', m.meta_value, NULL)) AS pet,
        GROUP_CONCAT(IF(m.meta_key = 'color_field', m.meta_value, NULL)) AS color,
        GROUP_CONCAT(IF(m.meta_key = 'location_field', m.meta_value, NULL)) AS location,
        GROUP_CONCAT(IF(m.meta_key = 'house_field', m.meta_value, NULL)) AS house
 FROM wp_users t1,
      wp_usermeta m
 WHERE u.ID = m.user_id
 GROUP BY u.ID;
 INSERT INTO new_table
 SELECT t1.ID,  t1.user_email,  t1.display_name, 
        GROUP_CONCAT(IF(m.meta_key = 'pet_field', m.meta_value, NULL)) AS pet,
        GROUP_CONCAT(IF(m.meta_key = 'color_field', m.meta_value, NULL)) AS color,
        GROUP_CONCAT(IF(m.meta_key = 'location_field', m.meta_value, NULL)) AS location,
        GROUP_CONCAT(IF(m.meta_key = 'house_field', m.meta_value, NULL)) AS house
 FROM wp_users t1,
      wp_usermeta m
 WHERE u.ID = m.user_id
 GROUP BY u.ID;