SQL多列排序不起作用

时间:2014-03-21 19:23:38

标签: sql

我尝试从表中选择数据并按2列排序。第一列(喜欢)排序好,但第二列排序不好。

SELECT *
FROM content
WHERE topic='$id' AND date='$date'
ORDER BY likes DESC, cpc DESC
LIMIT 4

我认为问题出现在LIMIT中,我将其删除,但效果不佳。 可能是什么问题? 谢谢

It's just a part of my table, here's just the columns i am operating with

2 个答案:

答案 0 :(得分:3)

没关系!它首先按likes排序,然后如果某些数据具有相同的values 值,则按cpc排序。但是您的likes是唯一的,所以之间没有区别:

SELECT *
FROM content
WHERE topic='$id' AND date='$date'
ORDER BY likes DESC, cpc DESC

SELECT *
FROM content
WHERE topic='$id' AND date='$date'
ORDER BY likes DESC

可能你想要:

SELECT * 
FROM (SELECT *
  FROM content
  WHERE topic='$id' AND date='$date'
  ORDER BY likes DESC
  LIMIT 4) a
ORDER BY a.cpc DESC

答案 1 :(得分:1)

记住表格中的所有数据都是相关的,这一点非常重要。因此,每次点击费用列中的字段值会直接与您喜欢的列中的字段值相关联。

每列的结果并不相互独立(至少不是您编写此查询的方式)。

因此,考虑到这一概念,这些数据是正确排序的。您的“喜欢”列已排序,然后根据静态“喜欢”排序对CPC进行排序。如果你有两行数据有20个喜欢而CPC分别是2和20,那么你会看到这些值根据你的顺序排序

 Order by cpc desc

线。但是,由于您的Likes行只有20个CPC值,因此这将是要显示的值。对下一行采用相同的示例,然后使用相同的示例,您可以看到值确实按顺序显示。