【问题标题】:Weird issue with orber by, inner join in wordpress query排序依据的奇怪问题,wordpress 查询中的内部连接
【发布时间】:2011-05-23 23:09:24
【问题描述】:

我正在开发 wordpress 中的自定义插件。我对一个 sql 有一个奇怪的问题。

SQL:

SELECT SQL_CALC_FOUND_ROWS wp_posts. *
FROM wp_posts
INNER JOIN wp_term_relationships 
ON ( wp_posts.ID = wp_term_relationships.object_id )
INNER JOIN wp_term_taxonomy 
ON ( wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id )
WHERE 1 =1
AND wp_term_taxonomy.taxonomy = 'category'
AND wp_term_taxonomy.term_id IN ('23')
AND (
wp_posts.post_author =1
)
AND wp_posts.post_type = 'post'
AND (
wp_posts.post_status = 'publish'
OR wp_posts.post_status = 'private'
)
GROUP BY wp_posts.ID
ORDER BY `wp_posts`.`as_stats_rating` DESC
LIMIT 0 , 30 

它返回正确的数据,但它没有根据 as_stats_rating 对结果进行排序。 我难住了。有谁知道我做错了什么?

编辑 1:更新

wp_posts 的结构如下:


示例结果:

ID  as_stats_rating
1221   8
1222   10

示例结果中的所有字段都是:
ID post_author post_date post_date_gmt post_content post_title post_excerpt post_status comment_status ping_status post_password post_name to_ping ping post_modified post_modified_gmt post_content_filtered post_parent guid menu_order post_type post_mime_type comment_count as_stats_numviews as_stats_numvotes as_stats_votestotal as_stats_rating


顺便说一句,它不仅关于“按 wp_posts.as_stats_rating 排序”,“按 wp_posts.as_stats_numviews 排序”也有同样的问题。 (澄清一下,如果您想知道 as_stats_rating 是否具有 varchar 类型)

【问题讨论】:

  • 我怀疑与限制语句有冲突。作为检查,取消限制并查看 order by 是否正确。
  • @Randy :不。刚刚通过删除限制条款检查,问题仍然存在。
  • 已经有group by了,group by应该是什么?
  • wp_post.ID 是自动增量吗?
  • 样本结果集是什么样的?

标签: mysql wordpress


【解决方案1】:

as_stats_rating 字段是否有可能是字符串 (char/text) 数据类型而不是数字 (float/int/decimal) 数据类型?

【讨论】:

  • 见鬼。我对这个问题感到非常抱歉。事实证明,将数据类型更改为 int 解决了这个问题。想一想,它是将 8 > 10 排序为文本。
猜你喜欢
  • 2015-11-26
  • 1970-01-01
  • 2020-12-18
  • 2020-05-25
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
  • 2012-01-20
  • 1970-01-01
相关资源
最近更新 更多