mysql - 在 2 个或更多表上使用列名称作为结果标题

标签 mysql sql

我已经搜索了一段时间,但没有找到解决方案。我有 2 个 mysql 表。 对象。对象描述页面、帖子、类别和内容

table object
----------
id    type

有关每个对象的附加信息存储在表元中

table meta
-----------------------------------------
id    object_id    meta_key    meta_value

如果我有 1 个 id 为 1 的对象,并且我的两个表如下所示

object     |  meta
---------  |  -------------------------
1    post  |  1    1   title    a title
              2    1   content  a content

有没有办法产生这样的输出

object_id    type    title    content
-------------------------------------
1            post    a title  a content

即使有 10 个、20 个或更多字段?这是一个sqlfiddle (已编辑)链接。谢谢。

最佳答案

尝试...

select o.id, o.type, om.title, om.content
from object o left join (
  select object_id,
    max(case when meta_key = 'title' then meta_value end) as title,
    max(case when meta_key = 'content' then meta_value end) as content
  from object_meta
  group by object_id) om on o.id = om.object_id

关于mysql - 在 2 个或更多表上使用列名称作为结果标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41527030/

相关文章:

mysql - 按取决于当前时间的条件进行排序的正确方法是什么?

php - 将多个值与多个值进行比较

sql - 在临时公用表表达式中添加自增列

mysql - SQL如何像Excel一样使用公式填充列

php - Where 子句在传递未知字符串值后检索数据。为什么?

php - FatalErrorException : Error: Call to a member function getId() on a non-object in . ..PostListener.php 第 20 行

php - 找到没有 child 的行,如果有 child 最新的 child

sql - Presto/SQL 查找下一个满足条件的值

php - 这是一个适当的登录和注册加密系统

sql - Oracle SQL -WITH 子句列名的数量与选择列表中的元素数量不匹配