好的,所以通过Wordpress,我最终得到了以下的查询字符串:
"SELECT * FROM wp_z4azbl_posts
LEFT JOIN wp_z4azbl_postmeta ON(
wp_z4azbl_posts.ID = wp_z4azbl_postmeta.post_id)
LEFT JOIN wp_z4azbl_term_relationships ON(
wp_z4azbl_posts.ID = wp_z4azbl_term_relationships.object_id)
LEFT JOIN wp_z4azbl_term_taxonomy ON(
wp_z4azbl_term_relationships.term_taxonomy_id = wp_z4azbl_term_taxonomy.term_taxonomy_id)
LEFT JOIN wp_z4azbl_terms ON(
wp_z4azbl_terms.term_id = wp_z4azbl_term_taxonomy.term_id)
WHERE wp_z4azbl_term_taxonomy.taxonomy = 'opportunitytype'
AND wp_z4azbl_posts.post_status = 'publish'
AND wp_z4azbl_posts.post_type = 'opportunities'
AND wp_z4azbl_postmeta.meta_key = 'date_timestamp'
GROUP BY wp_z4azbl_posts.ID
ORDER BY wp_z4azbl_postmeta.meta_value ASC"
最终这是有效的。它使用时间戳自定义字段抓取我的帖子,并按升序对其进行排序。但是,我还需要在所有带有时间戳的帖子之后附加没有时间戳的帖子。
现在,它显示的内容如下:
Event Title
January 1, 2011
Event Title 2
January 2, 2011
但我希望它能在没有时间戳的情况下追加所有帖子:
Event Title
January 1, 2011
Event Title 2
January 2, 2011
Event Title Nostamp
Event Title Nostamp 2
如何更改查询以使其生效?
修改
抱歉,我搞砸了我的原始查询。我实际上需要它们按升序排序,非时间戳帖子仍位于底部。
答案 0 :(得分:1)
要在结果集中包含没有时间戳的行,请将meta_key = 'date_timestamp'
子句从where
子句移至on
:
LEFT JOIN
wp_z4azbl_postmeta
ON wp_z4azbl_posts.ID = wp_z4azbl_postmeta.post_id
and wp_z4azbl_postmeta.meta_key = 'date_timestamp'
由于您要对descending
进行排序,因此null
值已经显示在底部。 null
被视为排序目的的最低可能值。
编辑:要对null
进行不同的排序,请使用case
:
order by
case
when wp_z4azbl_postmeta.meta_value is null then 2
else 1
end
, wp_z4azbl_postmeta.meta_value