SQL ORDER BY 多列排序

2021-09-24 08:10:48 字數 1505 閱讀 1000

最近學習my sql的時候對order by的多列排序邏輯不是很清楚,查閱了一些資料加上自己動手做了幾個小實驗清楚了不少,本結論僅適用於實驗條件下成立(列值為 int)先上結論:

如:order by 列名1,列名2,列名3…;

若列名後不加限制條件,將直接按照離order by語句最近的無限制條件的列名排序,即列名1,排序方式預設公升序。

如:select * from 表名 order by 列名1>5,列名2;,將按照列名2的值進行排序,而列名1>5的作用是分組,輸出結果將按照:列名1值<=5為第一組,列名1>5為第二組的方式,分成兩組,兩組分別按照列名2的值進行排序,下面以**為例具體說明:

//建立乙個無序表這樣更能看出實驗結果

create table test

(a int,

b int,

c int

);insert into test

(a,b,c)

values(9

,4,78

),(2

,7,80

),(3

,9,81

),(7

,2,60

),(5

,4,82

),(4

,3,72

),(8

,5,41

),(1

,8,59

),(6

,1,46

);//一、未加條件

//1 select *

from test order by a;

//2 select *

from test order by a,b;

//3 select *

from test order by a,b,c;

//以上三種情況執行結果均相同,以a的值為依據公升序排列

//二、增加條件

//1 select *

from test order by a>5;

//將初始表直接分為兩組a<=5在前,a>5在後,各組內先後順序同初始表

//2 select *

from test order by a>

5,b;

//將初始表直接分為兩組a<=5在前,a>5在後,與1情況不同的是各組內以b的值為依據公升序排列

select *

from test order by a>

5,b>

5,c;

//將初始表直接分為兩組a<=5在前,a>5在後,在第乙個分組a<=5中,再次按b<=5,b>5分組,組內順序以c的值為依據公升序排列,a>5同上

select *

from test order by a>

5,b>

5,c>60;

//將初始表直接分為兩組a<=5在前,a>5在後,在第乙個分組a<=5中,再次按b<=5,b>5分組,在b的每乙個分組內再次分組,分組內順序按照表的初始定義順序排序

以上就是本次實驗的全部過程,有興趣的同學可以直接試一下執行結果,如有不足歡迎批評指正.

python多列排序 python多列排序

python的sort 和sorted 函式可以進行多列排序。在乙個文字或者列表有多列時,這是乙個很好用的技巧。首先,看一下待排序的資料 這是乙個csv檔案,它有6列,我們需要首先對第一列排序,再對第六列排序 46896961,192100485,1,95wf5sm,1863,2014 12 18 ...

MySQL 多列排序

mysql 基礎篇 三正規化mysql 軍規 mysql 配置 mysql 使用者管理和許可權設定 mysql 常用函式介紹 mysql 字段型別介紹 mysql 多列排序 mysql 行轉列 列轉行 mysql null 使用帶來的坑 mysql and 和 or 聯合使用帶來的坑 mysql 觸...

Python集合多列排序,多規則排序

今天遇到乙個多列排序的問題,排序規則正反不等。接下來就讓我們來看看python的強大之處吧 我遇到的集合是這樣的 tm list 這是一組商標資料,初步的要求是按照相似型別 sm type倒敘,中文相似度 sm zh倒敘排列,我們可以這樣寫 sorted tm list,key lambda tm ...