在第二个表(mysql,wordpress)中按可选值排序表

时间:2014-11-03 12:28:03

标签: mysql sql wordpress join group-by

我想通过存储在第二个表中的(排序)值(" sortDate")来排序表的所有行(" posts")(&#34) ;元&#34)
。 第二个表的(sort-)值存储为键值对。关键是" publishDate'
两个表之间的链接列是" postID"。
第二个表的(sort-)值是可选的,或者可以多次输入 - >如果多次输入(sort-)值,我想使用最大值 - >如果第二个表中没有(sort-)值,我想使用" postDate" - 改为第一个表的值。

这是我的解决方案:

SELECT posts.postID,posts.postDate,metaDate.publishDate,
  CASE
    WHEN metaDate.publishDate is null Then posts.postDate
    ELSE metaDate.publishDate
  END AS sortDate /*fallback for those rows that do not have a matching key-value pair in second table*/
From posts
Left Join
  (
  Select meta.postID,MAX(metaValue) as publishDate
  From meta
  Where meta.metaKey = 'publishDate'
  GROUP BY meta.postID
  ) As metaDate /*create a table with the maximum of publishDate, therefor handle multiple entries*/
ON posts.postID = metaDate.postID
ORDER BY sortDate DESC;

另见 sqlfiddle with this solution --->

有更聪明/更快的方法吗? 因为我不是一个SQL专家 - 我监督的任何事情?

(背景:
表的结构是一个wordpress-database-structure,因此给出了一个相关的主题是"按wordpress中的自定义字段对帖子进行排序" - 但我找到的解决方案没有处理多个或可选的自定义字段)

感谢您的评论和支持

0 个答案:

没有答案