在我当前的代码中,
$sql = "SELECT *, SUM(news_points.points) as `total`
CASE `total` WHEN 0 THEN ORDER BY `news_id` ASC
CASE `total` WHEN NOT 0 THEN ORDER BY `total` DESC
FROM `news`,`news_points`";
我有两张桌子,news
和news_points
。我想要做的是news
基于news_points
名为points
. 如果 anews
没有分数或为负数,则将其放在“好”消息下方,即具有正数或至少不是负数的消息。
一些可能有帮助的架构。
news table
news_id -- news_title
1 -- New publication available.
2 -- Check out this new car!
3 -- Something else.
news_points table
point_id -- news_id -- point
1 -- 1 -- 2
2 -- 1 -- 5
3 -- 1 -- -4
4 -- 2 -- 5
5 -- 3 -- -2
基于上面的例子。新闻news_id=1
将有 3 分,news_id=2
将有 5 分,news_id=3
将有 -2 分,因此在返回的行中,news_id 为 2 的新闻将排在第一位,news_id 为 1 的新闻将排在第二位,news_id 将排在最后。但如果他们都没有评级或只有一些评级,其余的只是以 news_id 降序显示。
我怎样才能编写此 SQL 以正确获得结果?