gpt4 book ai didi

mysql - 从 MySQL 中的连接表中查询特定的元字段

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

我有一个包含下表的架构:

  • posts(idtitle 等)
  • metas(idpost_id(帖子的外键)、meta_key, 元值)

我想查询所有帖子的列表,还包括一个包含特定元字段的列。对于此示例,假设要获取的元字段是 rating - 即 meta_key 是“rating”。

对于没有带有“评级”键的元字段的帖子,该字段将为空白。期望结果示例:

| posts.id | posts.title | rating |
|----------|-------------|--------|
| 1 | Foo | 3 |
| 2 | Bar | |

这是我提出的一个查询,几乎可以正常工作。它的问题是,如果帖子有其他在“评级”之前查询的元字段,由于 GROUP BY 指令,它不会为元字段返回任何内容。

SELECT posts.id, posts.title if(metas.meta_key = 'rating', metas.meta_value, '') as 'rating'

FROM posts
LEFT JOIN metas ON posts.id = metas.post_id

GROUP BY posts.id;

我觉得查询的 SELECT 部分中的条件应该以某种方式合并到 JOIN 中。

最佳答案

所以,只看评分:

SELECT p.id, p.title, max(m.meta_value) as rating
FROM posts p LEFT JOIN
metas r
ON p.id = m.post_id AND m.meta_key = 'rating'
GROUP BY p.id;

您也可以通过在表达式前使用聚合函数(例如 max())来使用您的逻辑来执行此操作。

关于mysql - 从 MySQL 中的连接表中查询特定的元字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35480645/

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