gpt4 book ai didi

mysql - SQL - 内部连接和列到行

转载 作者:太空宇宙 更新时间:2023-11-03 12:16:44 24 4
gpt4 key购买 nike

使用 MySQL,我有两个类似于下表的表。两者实际上都有更多的行和更多的列,但为了便于阅读,我只放了一些

wp_ahm_files

ID | Field_A | Field_B | Field_C
--------------------------------
69 | ABC | DEF | GHI

wp_ahm_filemeta

本表中的pID是指上表的ID

ID | pID | Name    | Value
---------------------------------
25 | 69 | Version | 12345
26 | 69 | Expiry | 29/08/1981

我如何带回结果集,例如

ID | Field_A | Field_B | Field_C | Version | Expiry
-------------------------------------------------------
69 | ABC | DEF | GHI | 12345 | 29/08/1981

最佳答案

您应该能够加入您的 wp_ahm_filemeta 两次以获得结果:

select f.id,
f.field_a,
f.field_b,
f.field_c,
m1.value version,
m2.value expiry
from wp_ahm_files f
left join wp_ahm_filemeta m1
on f.id = m1.pid
and m1.name = 'Version'
left join wp_ahm_filemeta m2
on f.id = m2.pid
and m2.name = 'Expiry';

参见 SQL Fiddle with Demo .关键是在 JOIN 条件上放置一个过滤器,以返回具有您想要的特定 name 值的行。

您还可以使用带有 CASE 表达式的聚合函数将数据行转换为列:

select f.id,
f.field_a,
f.field_b,
f.field_c,
max(case when m.name = 'Version' then m.value end) version,
max(case when m.name = 'Expiry' then m.value end) expiry
from wp_ahm_files f
left join wp_ahm_filemeta m
on f.id = m.pid
group by f.id, f.field_a, f.field_b, f.field_c;

参见 SQL Fiddle with Demo

关于mysql - SQL - 内部连接和列到行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21831078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com