Mysql 联合命令不起作用


Mysql union order by not working

这是我正在运行的查询:

SELECT * FROM ( 
    (SELECT wp_posts.*, wp_postmeta.meta_value AS views FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) WHERE 1=1 AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') AND ( wp_postmeta.meta_key = 'views' ) GROUP BY wp_posts.ID) 
UNION 
    ( SELECT wp_2_posts.*, wp_2_postmeta.meta_value AS views FROM wp_2_posts INNER JOIN wp_2_postmeta ON ( wp_2_posts.ID = wp_2_postmeta.post_id ) WHERE 1=1 AND wp_2_posts.post_type = 'post' AND (wp_2_posts.post_status = 'publish' OR wp_2_posts.post_status = 'private') AND ( wp_2_postmeta.meta_key = 'views' ) GROUP BY wp_2_posts.ID)
) AS posts ORDER BY views DESC LIMIT 0, 10

我希望整个结果集按视图排序,但我似乎得到的是排序的子查询。总共有 4 个帖子,第一个查询返回 2 个,第二个查询返回 2 个。第一个查询的帖子有 8 个视图和 7 个视图。第二个查询的帖子有 13 个视图和 0 个视图。所以返回的订单应该是 13, 8 7, 0,但我得到的是 8、7、13、0

我哪里出错了?

啊,

好的,我解决了。这是因为视图字段不是数字字段,因此它将它们排序为字符串而不是数字!因此,因为 13 以 1 开头,所以它排在 8 和 7 之后。