首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何有条件地选择行值并将其更改为自定义列?

如何有条件地选择行值并将其更改为自定义列?
EN

Stack Overflow用户
提问于 2020-06-20 16:22:11
回答 1查看 40关注 0票数 0

我有两个表ordersproduct_meta,如下所示:

订单:

代码语言:javascript
复制
order_id product_id
   1        45
   1        46
   2        46  

product_meta:

代码语言:javascript
复制
product_id meta_key meta_value
    45       price    1199
    45       name     GPU-1
    46       price    1299
    46       name     GPU-2

我想要一张这样的桌子

代码语言:javascript
复制
order_id product_id product_name product_price
     1        45       GPU-1         1199
     1        46       GPU-2         1299
     2        46       GPU-2         1299

我尝试过的查询:

代码语言:javascript
复制
select
    o.order_id,
    o.product_id,
    pm.meta_value as 'product_name'
from  orders o
join product_meta pm on pm.product_id = o.product_id AND pm.meta_key = 'name'

但是这只适用于一个字段(name),所以我如何修改它以包括价格和其他元值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-20 16:24:11

一种方法是两个联接:

代码语言:javascript
复制
select o.*, pmn.meta_value as product_name, pmp.meta_value as product_price
from orders o left join
     product_meta pmn
     on pmn.product_id = o.product_id and pmn.meta_key = 'name' left join
     product_meta pmp
     on pmp.product_id = o.product_id and pmp.meta_key = 'price';

这使用left join,因此所有订单都将包括在内,即使元数据缺少名称或价格或两者都缺少。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62488492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档