Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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_Database - Fatal编程技术网

表列到行的mysql查询

表列到行的mysql查询,mysql,sql,database,Mysql,Sql,Database,我有两个表,我需要的结果表几乎从列转换到行转换 表1:主表 master_id user_name 1 name1 2 name2 3 name3 4 name4 表2:主元表 id master_id meta_key meta_value 1 1 f_name f

我有两个表,我需要的结果表几乎从列转换到行转换

表1:主表

  master_id    user_name 

  1            name1 

  2            name2 

  3            name3 

  4            name4
表2:主元表

  id   master_id        meta_key         meta_value

  1    1                f_name           fname1

  2    2                f_name           fname2

  3    2                l_name           lname2

  4    2                age              age2

  5    3                l_name           lnam3

  6    3                age              age3

  7    4                sex              male
我希望得到这样的结果

  master_id    user_name     f_name     l_name   age    sex

  1            name1         fname1                        

  2            name2         fname2     lname2   age2                        

  3            name3                    lname3   age3                      

  4            name4         fname4                     male   
请找个人帮我做这个…

试试:

select
   mt1.master_id,
   mt1.user_name,
   max(case when mt2.meta_key = 'f_name' then mt2.meta_value end) as fname,
   max(case when mt2.meta_key = 'l_name' then mt2.meta_value end) as lname,
   max(case when mt2.meta_key = 'age' then mt2.meta_value end) as age,
   max(case when mt2.meta_key = 'sex' then mt2.meta_value end) as sex
from
   master_table mt1
join master_meta_table mt2 on mt1.master_id = mt2.master_id
group by
   mt1.master_id,
   mt1.user_name
提琴:试试:

select
   mt1.master_id,
   mt1.user_name,
   max(case when mt2.meta_key = 'f_name' then mt2.meta_value end) as fname,
   max(case when mt2.meta_key = 'l_name' then mt2.meta_value end) as lname,
   max(case when mt2.meta_key = 'age' then mt2.meta_value end) as age,
   max(case when mt2.meta_key = 'sex' then mt2.meta_value end) as sex
from
   master_table mt1
join master_meta_table mt2 on mt1.master_id = mt2.master_id
group by
   mt1.master_id,
   mt1.user_name
提琴:试试:

select
   mt1.master_id,
   mt1.user_name,
   max(case when mt2.meta_key = 'f_name' then mt2.meta_value end) as fname,
   max(case when mt2.meta_key = 'l_name' then mt2.meta_value end) as lname,
   max(case when mt2.meta_key = 'age' then mt2.meta_value end) as age,
   max(case when mt2.meta_key = 'sex' then mt2.meta_value end) as sex
from
   master_table mt1
join master_meta_table mt2 on mt1.master_id = mt2.master_id
group by
   mt1.master_id,
   mt1.user_name
提琴:试试:

select
   mt1.master_id,
   mt1.user_name,
   max(case when mt2.meta_key = 'f_name' then mt2.meta_value end) as fname,
   max(case when mt2.meta_key = 'l_name' then mt2.meta_value end) as lname,
   max(case when mt2.meta_key = 'age' then mt2.meta_value end) as age,
   max(case when mt2.meta_key = 'sex' then mt2.meta_value end) as sex
from
   master_table mt1
join master_meta_table mt2 on mt1.master_id = mt2.master_id
group by
   mt1.master_id,
   mt1.user_name
小提琴:

这是您的DDL

create table master_table
(
  master_id int,
  user_name varchar(20)
  );

create table master_meta_table
(
  id int,
  master_id int,
  meta_key varchar(20),
  meta_value varchar(20)
  );


insert into master_table
values (
  1,'name1');
insert into master_table
values (
  2,'name2');
insert into master_table
values (
  3,'name3');
insert into master_table
values (
  4,'name4');

insert into master_meta_table
values (
  1,1,'f_name','fname1');
insert into master_meta_table
values (
  2,2,'f_name','fname2');
insert into master_meta_table
values (
  3,2,'l_name','lname2');
insert into master_meta_table
values (
  4,2,'age','age2');
insert into master_meta_table
values (
  5,3,'l_name','lname3');
insert into master_meta_table
values (
  6,3,'age','age3');
insert into master_meta_table
values (
  7,4,'sex','male');
你的问题

select
   mt.master_id,
   mt.user_name,
   max (case when mmt.meta_key = 'f_name' then mmt.meta_value end) as fname,
   max (case when mmt.meta_key = 'l_name' then mmt.meta_value end) as lname,
   max (case when mmt.meta_key = 'age' then mmt.meta_value end) as age,
   max (case when mmt.meta_key = 'sex' then mmt.meta_value end) as sex
from
   master_table mt,master_meta_table mmt 
where mt.master_id = mmt.master_id
group by mt.master_id,mt.user_name
这是您的DDL

create table master_table
(
  master_id int,
  user_name varchar(20)
  );

create table master_meta_table
(
  id int,
  master_id int,
  meta_key varchar(20),
  meta_value varchar(20)
  );


insert into master_table
values (
  1,'name1');
insert into master_table
values (
  2,'name2');
insert into master_table
values (
  3,'name3');
insert into master_table
values (
  4,'name4');

insert into master_meta_table
values (
  1,1,'f_name','fname1');
insert into master_meta_table
values (
  2,2,'f_name','fname2');
insert into master_meta_table
values (
  3,2,'l_name','lname2');
insert into master_meta_table
values (
  4,2,'age','age2');
insert into master_meta_table
values (
  5,3,'l_name','lname3');
insert into master_meta_table
values (
  6,3,'age','age3');
insert into master_meta_table
values (
  7,4,'sex','male');
你的问题

select
   mt.master_id,
   mt.user_name,
   max (case when mmt.meta_key = 'f_name' then mmt.meta_value end) as fname,
   max (case when mmt.meta_key = 'l_name' then mmt.meta_value end) as lname,
   max (case when mmt.meta_key = 'age' then mmt.meta_value end) as age,
   max (case when mmt.meta_key = 'sex' then mmt.meta_value end) as sex
from
   master_table mt,master_meta_table mmt 
where mt.master_id = mmt.master_id
group by mt.master_id,mt.user_name
这是您的DDL

create table master_table
(
  master_id int,
  user_name varchar(20)
  );

create table master_meta_table
(
  id int,
  master_id int,
  meta_key varchar(20),
  meta_value varchar(20)
  );


insert into master_table
values (
  1,'name1');
insert into master_table
values (
  2,'name2');
insert into master_table
values (
  3,'name3');
insert into master_table
values (
  4,'name4');

insert into master_meta_table
values (
  1,1,'f_name','fname1');
insert into master_meta_table
values (
  2,2,'f_name','fname2');
insert into master_meta_table
values (
  3,2,'l_name','lname2');
insert into master_meta_table
values (
  4,2,'age','age2');
insert into master_meta_table
values (
  5,3,'l_name','lname3');
insert into master_meta_table
values (
  6,3,'age','age3');
insert into master_meta_table
values (
  7,4,'sex','male');
你的问题

select
   mt.master_id,
   mt.user_name,
   max (case when mmt.meta_key = 'f_name' then mmt.meta_value end) as fname,
   max (case when mmt.meta_key = 'l_name' then mmt.meta_value end) as lname,
   max (case when mmt.meta_key = 'age' then mmt.meta_value end) as age,
   max (case when mmt.meta_key = 'sex' then mmt.meta_value end) as sex
from
   master_table mt,master_meta_table mmt 
where mt.master_id = mmt.master_id
group by mt.master_id,mt.user_name
这是您的DDL

create table master_table
(
  master_id int,
  user_name varchar(20)
  );

create table master_meta_table
(
  id int,
  master_id int,
  meta_key varchar(20),
  meta_value varchar(20)
  );


insert into master_table
values (
  1,'name1');
insert into master_table
values (
  2,'name2');
insert into master_table
values (
  3,'name3');
insert into master_table
values (
  4,'name4');

insert into master_meta_table
values (
  1,1,'f_name','fname1');
insert into master_meta_table
values (
  2,2,'f_name','fname2');
insert into master_meta_table
values (
  3,2,'l_name','lname2');
insert into master_meta_table
values (
  4,2,'age','age2');
insert into master_meta_table
values (
  5,3,'l_name','lname3');
insert into master_meta_table
values (
  6,3,'age','age3');
insert into master_meta_table
values (
  7,4,'sex','male');
你的问题

select
   mt.master_id,
   mt.user_name,
   max (case when mmt.meta_key = 'f_name' then mmt.meta_value end) as fname,
   max (case when mmt.meta_key = 'l_name' then mmt.meta_value end) as lname,
   max (case when mmt.meta_key = 'age' then mmt.meta_value end) as age,
   max (case when mmt.meta_key = 'sex' then mmt.meta_value end) as sex
from
   master_table mt,master_meta_table mmt 
where mt.master_id = mmt.master_id
group by mt.master_id,mt.user_name


请没有人在这里帮助?请没有人在这里帮助?请没有人在这里帮助?请没有人在这里帮助?谢谢您,先生,表2中的答复可能会有更多的元键,值字段将被添加。我不知道将来会添加哪些元键。那么在这种情况下如何编写查询呢?这超出了普通sql的范围。我必须看看动态sql,尽管我认为您最好在Excel中创建一个透视表谢谢您,先生,对于表2中的答复,可能会有更多的元键,值字段将被添加。我不知道将来会添加哪些元键。那么在这种情况下如何编写查询呢?这超出了普通sql的范围。我必须看看动态sql,尽管我认为您最好在Excel中创建一个透视表谢谢您,先生,对于表2中的答复,可能会有更多的元键,值字段将被添加。我不知道将来会添加哪些元键。那么在这种情况下如何编写查询呢?这超出了普通sql的范围。我必须看看动态sql,尽管我认为您最好在Excel中创建一个透视表谢谢您,先生,对于表2中的答复,可能会有更多的元键,值字段将被添加。我不知道将来会添加哪些元键。那么在这种情况下如何编写查询呢?这超出了普通sql的范围。我必须看看动态sql,虽然我认为您最好只是在Excels中创建一个透视表。谢谢您的回复,先生,也许有时候会添加一些元键、值字段。我不知道将来会添加哪些元键。那么在这种情况下如何编写查询?在这种情况下,我不确定如何重命名别名。我已经问过了,但没有得到明确的答复。如果您可以命名别名,那么您可以合并另一个不同的查询,该查询将只生成回复的列hanks,先生,也许有时会添加一些元键、值字段。我不知道将来会添加哪些元键。那么在这种情况下如何编写查询?在这种情况下,我不确定如何重命名别名。我已经问过了,但没有得到明确的答复。如果您可以命名别名,那么您可以合并另一个不同的查询,该查询将只生成回复的列hanks,先生,也许有时会添加一些元键、值字段。我不知道将来会添加哪些元键。那么在这种情况下如何编写查询?在这种情况下,我不确定如何重命名别名。我已经问过了,但没有得到明确的答复。如果您可以命名别名,那么您可以合并另一个不同的查询,该查询将只生成回复的列hanks,先生,也许有时会添加一些元键、值字段。我不知道将来会添加哪些元键。那么在这种情况下如何编写查询?在这种情况下,我不确定如何重命名别名。我已经问过了,但没有得到明确的答复。如果可以命名别名,则可以合并另一个只会产生列的不同查询