【问题标题】:Multiple ascending order is not working in Mysql多个升序在Mysql中不起作用
【发布时间】:2017-07-30 19:46:36
【问题描述】:

我有一张名为request 的表,三列名为Id, want, teach。我必须按升序显示wantteach 列,我不想显示NULL 和空白行。

我尝试仅查询want 列以升序显示,但teach 列未以升序显示。

  SELECT want, teach FROM request WHERE want IS NOT NULL OR want !='' AND teach IS NOT NULL OR teach !='' GROUP BY want, teach ORDER BY want ASC, teach ASC

如果我写 ORDER BY 教导 ASC,想要 ASC,然后教导列以升序显示,而想要显示 DESC 顺序。 你会在这方面帮助我吗?

Chech 左侧栏是要,右侧栏是教。我得到这样的输出。左侧列是 ASC 顺序,但右侧显示 DESC

【问题讨论】:

  • 查询的结果(数据的排序)在很大程度上取决于表中已有的数据。您能否提供一些示例数据、该数据的预期结果以及您目前得到的结果?
  • Muntasir 先生,我更新了我的描述。请检查。
  • @NarendraVerma 你明白我的回答吗?

标签: mysql sorting


【解决方案1】:

您在这里没有得到多订单的意义。

首先,默认情况下,大多数 dbms 排序为ASC

多个排序取决于排序列的顺序,这意味着-可以这么说-:-

“嘿 sql!从我的表中选择一些结果,按 col1 排序并按此顺序分组,然后按排序或分组的数据集按 col2 排序。”

可以说是一种多维排序。

以此为例:

+------+---------+-------+                   +------+---------+-------+
|  id  |   want  | teach |                   |  id  |   want  | teach |
+------+---------+-------+                   +------+---------+-------+
|   1  |    1    |   2   |    ORDER BY       |   2  |    1    |   1   |
|   2  |    1    |   1   |       want asc,   |   1  |    1    |   2   |
|   3  |    2    |   1   |       teach asc   |   4  |    1    |   2   |
|   4  |    1    |   2   |                   |   3  |    2    |   1   |
+------+---------+-------+                   +------+---------+-------+

当您像这样恢复排序列的顺序时:

+------+---------+-------+                   +------+---------+-------+
|  id  |   want  | teach |                   |  id  |   want  | teach |
+------+---------+-------+                   +------+---------+-------+
|   1  |    1    |   2   |    ORDER BY       |   2  |    1    |   1   |
|   2  |    1    |   1   |       teach asc,  |   3  |    2    |   1   |
|   3  |    2    |   1   |       want asc    |   1  |    1    |   2   |
|   4  |    1    |   2   |                   |   4  |    1    |   2   |
+------+---------+-------+                   +------+---------+-------+

【讨论】:

  • 感谢哈桑·艾哈迈德先生的回复,我也遇到了同样的事情,如何按 ASC 顺序显示两列?
  • 使用 php 或者它的替代方法来排序它可能是一个很好的解决方法,如果你使用 php。如果你想要一个纯 sql 解决方案,那么要么进行两个单独的查询,要么使用子查询或联合来解决它。
【解决方案2】:

首先你需要了解order by

如果您给出 1st,2nd asc 顺序,它将首先 asc 第一列,并依赖于此它会 asc 2nd 列。 例如

1st  2nd               
1    b
2    d
3    a
2    a
1    a

按转换排序

 1st   2nd 
  1     a
  1     b
  2     a
  2     d
  3     a

所以你需要不同的查询

     SELECT want FROM request WHERE want IS NOT NULL OR want !='' GROUP BY 
 want ORDER BY want ASC

     SELECT teach FROM request WHERE teach IS NOT NULL OR teach !='' GROUP
 BY  teach ORDER BY teach ASC

【讨论】:

  • 是的,知识先生,我们只能使用两个多重查询,..为我工作
猜你喜欢
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 1970-01-01
  • 2013-01-26
  • 1970-01-01
相关资源
最近更新 更多