【问题标题】:SQL multiple column sort not workingSQL多列排序不起作用
【发布时间】:2014-03-22 03:43:22
【问题描述】:

我尝试从表中选择数据并按 2 列对行进行排序。它按第一列(喜欢)排序正常,但第二列没有。

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

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

【问题讨论】:

  • 请使用未按预期排序的示例数据编辑您的问题。
  • 您能否发布一些不起作用的示例数据?
  • 您的数据显示没有问题。它首先按喜欢降序排序,因为没有重复的 CPC 排序无关紧要。也许你需要先做CPC然后点赞?或者您需要了解排序的工作原理……按列出的顺序排列。
  • 是的,按赞降序排序,但 cpc 是升序排序。不要现在可能是什么原因。
  • 对我来说看起来不错。只是你的大脑绊倒

标签: sql


【解决方案1】:

没关系!它首先按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

【讨论】:

  • 好吧,我的错。我现在明白了。但是如果我想要这个:选择按喜欢 DESC 排序的 4 个条目,然后按 cpc 对这 4 个条目进行排序?我怎样才能做到这一点?谢谢。
  • @ValeriuMazare 请立即查看
【解决方案2】:

请务必记住,表中的所有数据都是相关的。因此,CPC 列中的字段值直接与喜欢列中的字段值相关联。

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

因此,考虑到这一概念,此数据已正确排序。您的 Likes 列已排序,然后 CPC 基于静态 Likes 排序进行排序。如果您有两行数据,有 20 个赞,而每次点击费用分别为 2 和 20,那么您会看到这些值根据您的

 Order by cpc desc

线。但是,由于您的 Likes 行只有一个 CPC 值 20,这将是显示的值。下一行和之后的行也一样,你可以看到这些值实际上是按顺序出现的。

【讨论】:

    猜你喜欢
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多