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)
假设id列table a是primary 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)
| 归档时间: |
|
| 查看次数: |
298 次 |
| 最近记录: |