【发布时间】:2019-05-11 20:47:49
【问题描述】:
注意:此问题与 WordPress 特定问题有关,但我想从纯 SQL 的角度对此进行“外部观察”:https://wordpress.stackexchange.com/questions/55263/order-posts-by-custom-field-and-if-custom-field-is-empty-return-remaining-posts
假设我们必须具有以下结构的表:
表posts:ID(键),Title
表post_metadata:post_ID(FKEY),meta_key,meta_value
我想检索具有以下内容的帖子的 ID 和标题:
-
post_metadata中的一个条目,其中key= 'meta_1' 和meta_value= 'value_1' - 在
post_metadata中添加一个条目,其中key= 'meta_2' 和meta_value= 'value_2'
我想通过meta_key = "meta_3" 的第三个元数据的值对结果进行排序。
现在是棘手的部分:
并非所有帖子在post_metadata 表中都有一个条目,“meta_3”为meta_key。由于我没有按 meta_3 过滤帖子,只是排序,所以我想将这些帖子保留在我的结果中,就好像它们对于这个 meta 有一个空值一样。
我们怎样才能做到这一点?
谢谢
编辑:
现在有 SQL fiddle:https://www.db-fiddle.com/f/kBNaaRFB5xfna5MniuTpaG/1
【问题讨论】:
-
LEFT JOIN... ORDER BY IFNULL(m3.meta_value, '我的空白值')
-
没能做到这一点
-
请阅读并采取行动 [ask' 和 minimal reproducible example 并展示您可以做什么以及您尝试了什么。请在您的问题中包含与您的问题相关的任何其他地方的文本。
-
嗨,我已经使用这个建议设置了一个 SQL 小提琴:db-fiddle.com/f/kBNaaRFB5xfna5MniuTpaG/1
标签: mysql join sql-order-by