MySQL-数据库sql语句排序问题

发布于 2017-08-15 20:54:29 字数 768 浏览 1297 评论 1

我要对文章进行排序,按照投票数的多少排,已经投票的都会记录投票数,而没有投票的文章没有记录,这时排序就有问题了,它先把有记录的文章进行排序,因为投票可能是负数,排完了负数再排列没有投票记录的文章,默认投票数为0

按投票数大小排序,没有投票的文章都为0,反而在负数的后面

有投票记录的文章

生成的sql语句:SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts LEFT JOIN wp_wti_like_post on wp_wti_like_post.post_id=wp_posts.ID WHERE 1=1 AND ( ( post_date_gmt > '2013-11-16 12:17:03' ) ) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') ORDER BY wp_wti_like_post.value DESC,wp_posts.post_date DESC LIMIT 5, 5

sql语句应该怎样写呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灵芸 2017-10-19 14:44:41

自己找出解决方案了,自好自问自答了!

使用wordpress的钩子函数,在发表文章的同时添加一条记录到投票表不就可以了

直接上代码:

//发表文章的同时插入数据到喜欢表
function new_article($post_ID){
global $wpdb;
$ip = WtiGetRealIpAddress();
$query = "INSERT INTO {$wpdb->prefix}wti_like_post SET ";
$query .= "post_id = '" . $post_ID . "', ";
$query .= "value = '0', ";
$query .= "date_time = '" . date('Y-m-d H:i:s') . "', ";
$query .= "ip = '$ip'";
$success = $wpdb->query($query);
if($success){
return $post_ID;
}
}
add_action('publish_post', 'new_article');

把这段代码放到主题function.php里面。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文