gpt4 book ai didi

MySQL 左连接

转载 作者:行者123 更新时间:2023-11-29 07:06:49 29 4
gpt4 key购买 nike

我有 2 个表(Wordpress 数据库),一个存储帖子,另一个存储元数据。对于此示例,posts 表存储有关场所(即酒吧或俱乐部)的信息。元表存储用户/访问者给这些栏的评级。评级在键“_rating”下存储为 20、40、60、80 或 100。我有以下查询。

SELECT posts.*, AVG(meta.meta_value) as average 
FROM wp_posts as posts
LEFT JOIN wp_postmeta as meta
ON posts.ID = meta.post_ID

WHERE meta.meta_key = '_rating'
AND posts.post_status = 'publish'
AND posts.post_type = 'npc_venue'

GROUP BY meta.post_id
ORDER BY post_title asc

除一个问题外,这很好用。如果某个地点尚未收到评级,则 wp_postmeta 表中没有“_rating”条目,因此不会在查询中提取。

问题是:如何从数据库中提取所有场馆的平均评分,即使它们尚未收到评分。提前致谢!

编辑:如果一个地点还没有被评级,那么 wp_postmeta 表中就没有 _rating 条目,这就提出了一个问题,NULL 到底是什么意思? NULL 通常用于未知值。但是,当条目从表中完全丢失时,它仍然被认为是 NULL 吗?或者它只是变成一个空行集?

最佳答案

meta.meta_key = '_rating' 放在连接条件中,而不是放在 WHERE 子句中,即(未测试):

SELECT posts.*, AVG(meta.meta_value) as average 
FROM wp_posts as posts
LEFT JOIN wp_postmeta as meta
ON posts.ID = meta.post_ID
AND meta.meta_key = '_rating'

WHERE posts.post_status = 'publish'
AND posts.post_type = 'npc_venue'

GROUP BY posts.ID
ORDER BY post_title asc

还要注意 GROUP BY 子句的变化;如果没有匹配的元数据记录,meta.post_ID 将为 NULL。

关于MySQL 左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6847374/

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