我怎样才能加入两个表并动态地进行Pivot

sor*_*h86 2 mysql sql pivot-table

我有两张桌子,A和B.

A(id,name)
B(a_id,key,value)

带有一些值的表

**A table**

-----------------------------
   id        |      name
-----------------------------
    1        |      sorabh
    2        |      john
-----------------------------

**B table**

-------------------------------------------------
     a_id    |     key     |     value
-------------------------------------------------
      1      |    looks    |    handsome
      1      |    lazy     |    yes
      1      |    car      |    honda
      2      |    phone    |    948373221
      1      |    email    |    some@ccid.com
-------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

现在我想要实现的是一个跟随,单个查询,内部联接,交叉联接等.

SELECT * FROM A
CROSS JOIN B WHERE A.id=1
Run Code Online (Sandbox Code Playgroud)

结果必须是这样的

--------------------------------------------------------------------
  id   |   name   |    looks   |   lazy  |    car   |   email
--------------------------------------------------------------------
   1   |  sorabh  |   handsome |   yes   |  honda   | some@ccid.com 
--------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

Bar*_*han 5

假设idtable aprimary key列并且 table b具有复合唯一键a_id,key列组合或没有重复,即使没有这样的约束,相关子查询可以用作:

select a.*,
       ( select value from b where b.a_id = a.id and b.key = 'looks' ) as looks,
       ( select value from b where b.a_id = a.id and b.key = 'lazy' ) as lazy,
       ( select value from b where b.a_id = a.id and b.key = 'car' ) as car,
       ( select value from b where b.a_id = a.id and b.key = 'email' ) as email
  from a
 where a.id = 1;
Run Code Online (Sandbox Code Playgroud)