簡體   English   中英

Mysql從同一行中的同一行返回多列

[英]Mysql returning multiple column from same row in same in same table

假設我的表名“POST”只包含“POST_ID”,我有另一個表名post_meta,它還包含“POST_ID”(作為外鍵)和另外兩個列“meta_key”和“meta_value”

我表的結構是

郵政表:

post_ID
1
2

元表:

meta_id      post_id        meta_key          meta_value 
1              1            suite_size        1000
2              1            suite_number      10 
3              2            suite_size        2000
4              2            suite_number      20  

我想創建一個像這樣的表

post_id   suite_size  suite_number
1         1000         10
2         2000         20  

我怎樣才能做到這一點 ?

嘗試這個:

SELECT pm.post_ID,
       SUM(CASE WHEN pm.meta_key = 'suite_size' THEN pm.meta_value ELSE 0 END) as suite_size,
       SUM(CASE WHEN pm.meta_key = 'suite_number' THEN pm.meta_value ELSE 0 END) as suite_number
FROM post_meta pm 
GROUP BY pm.post_ID;

要么

如果你想要post_meta表中的所有帖子是否不存在,那么使用下面的查詢

SELECT p.post_ID,
       SUM(CASE WHEN pm.meta_key = 'suite_size' THEN pm.meta_value ELSE 0 END) as suite_size,
       SUM(CASE WHEN pm.meta_key = 'suite_number' THEN pm.meta_value ELSE 0 END) as suite_number
FROM post p
LEFT JOIN post_meta pm ON p.post_id = pm.post_ID
GROUP BY p.post_ID;

您需要使用pivot技術將行顯示為列才能實現此目的

select
p.post_ID,
max(case when pm.meta_key = 'suite_size' then pm.meta_value end) as `suite_size`,
max(case when pm.meta_key = 'suite_number' then pm.meta_value end) as `suite_number`
from post p
join post_meta pm on pm.post_id = p.post_ID
group by p.post_ID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM