当前位置: 首页 > 面试题库 >

Mysql-如何通过交替(1,2,3,1,2,3,1,2,3,)行来排序结果,有可能吗?

董建茗
2023-03-14
问题内容

我想按客户端1、2、3,然后再次按客户端1、2、3等对结果进行排序。

有没有一种方法,而无需使用for循环或进行三个单独的查询?不仅如此,而且我正在处理分页数据,因此它需要返回x结果,但要始终如一。

有任何想法吗?GROUP BY?

client_id  project_id  project_name  
---------- ----------  ------------
 1         42          project abc
 2         49          project xyz
 3         41          project 123
 1         22          project apple
 2         29          project orange
 3         21          project banana

问题答案:

采用:

SELECT x.client_id, 
       x.project_id,
       x.project_name
  FROM (SELECT t.client_id,
               t.project_id,
               t.project_name,
               CASE
                 WHEN @client_id != t.client_id THEN @rownum := 0
                 WHEN @client_id = t.client_id THEN @rownum := @rownum + 1
                 ELSE @rownum 
               END AS rank,
               @client_id := t.client_id
          FROM TABLE t,
               (SELECT @rownum := 0, @client_id
      ORDER BY t.client_id) r) x
ORDER BY x.rank, x.client_id

MySQL没有任何排名功能,但是幸运的是您可以使用变量。关键是在client_id与先前的client_id不匹配时重置@rownum值-
子查询中的ORDER BY是为了确保客户机顺序正确。



 类似资料:
  • 问题内容: 我想按客户端1、2、3,然后再次按客户端1、2、3等对我的结果进行排序。 有没有一种方法,而无需使用for循环或进行三个单独的查询?不仅如此,而且我正在处理分页数据,因此它需要返回x结果,但是要始终如一。 有任何想法吗?GROUP BY? 问题答案: 使用: MySQL没有任何排名功能,但是幸运的是您可以使用变量。关键是在client_id与先前的client_id不匹配时重置@row

  • 问题内容: 无论出于什么原因,我都需要两次通过mysql结果集。有办法吗?我不想运行两次查询,也不需要重写脚本,以便它将行存储在某处,然后在以后重用。 问题答案: 这是您可以执行的操作: 但是,我不得不说,这似乎不是解决此问题的正确方法。为什么不在第一个循环中进行处理?

  • 我们使用Cassandra的用例是显示一篇博客文章的前10名最近访问者。以下是Cassandra表定义 现在,为了显示给定博客帖子的前10名最近访问者,需要在时间戳desc上有一个明确的“order by”子句。因为visted_ts不是Cassandra中集群列的一部分,所以我们无法完成这项工作。visited_ts不是集群列的一部分的原因是为了避免记录重复(读为重复)访问者。主键的设计方式是为

  • 问题内容: 我有一个使用IN子句的存储过程。在我的ASP.NET应用程序中,我有一个多行文本框,可为存储过程提供值。我希望能够按在文本框中输入的值进行排序。我发现如何在mySQL中轻松地执行此操作(使用FIELD函数),而不是与SQL Server等效的方法。 所以我的查询看起来像: 因此,我将从应用程序中传递值,例如‘113113’,‘112112’,‘114114’(以任意顺序)。我想按该列表

  • 问题内容: 当我使用IN从表中选择一组行时,例如 有一种SQL技巧可以按照IN集合中给定的顺序恢复它们吗? 因此,在示例中,假设x具有ID为23、55、44和12的行,则将按该顺序返回这四行。 问题答案:

  • 我正在通过在标签提供程序中实现ITableColorProvider来为SWT/JFace表添加交替的行颜色,但是当表被排序或过滤时,表行颜色不会保持它们的位置。所以我会在白色行旁边有白色行,在灰色行旁边有灰色行。我猜这是因为我的元素被重新排列,行颜色也随之而来。这是我使用的在表被过滤或排序时不起作用的东西: 它工作得很好,直到通过排序或过滤更改表格。谢谢你的帮助。