常用的一些SQL語句整理,也許有你想要的。

2022-01-16 18:22:57 字數 2052 閱讀 3515

本篇文章是對一些常用的sql語句進行了總結與分析,需要的朋友參考下,也許會有你需要的。

1.sql行列轉換

問題:假設有張學生成績表(tb)如下:

姓名 課程 分數

張三 語文 74

張三 數學 83

張三 物理 93

李四 語文 74

李四 數學 84

李四 物理 94

想變成(得到如下結果): 

姓名 語文 數學 物理 

---- ---- ---- ----

李四 74 84 94

張三 74 83 93

sql語句為:

select 姓名 as 姓名 ,

max(case 課程 when '語文' then 分數 else 0 end) 語文,

max(case 課程 when '數學' then 分數 else 0 end) 數學,

max(case 課程 when '物理' then 分數 else 0 end) 物理

from tb

group by 姓名

2.sql分頁

--分頁方案一:(利用not in和select top分頁) 

語句形式:

select top 10 * from testtable

where (id not in(select top 20 id from testtable order by id))

order by id

select top 頁大小 * from testtable

where (id not in (select top 頁大小*頁數 id from 表 order by id))

order by id

-------------------------------------

--分頁方案二:(利用id大於多少和select top分頁)

語句形式:

select top 10 * from testtable

where (id > (select max(id) from (select top 20 id from testtable order by id) as t))

order by id

select top 頁大小 * from testtable

where (id > (select max(id) from (select top 頁大小*頁數 id from 表 order by id) as t))

order by id

-------------------------------------

--分頁方案三:(利用sqlserver2005中的新特性row_number進行分頁)

select * from (

select row_number()over(order by id desc) as rowid,* from testtable

) as mytable

where rowid between 21 and 40

大家根據自己的需要選擇對應的sql語句。

提示:方案三必須為sqlserver2005以上版本才可使用。

3.sql查詢結果合併

使用union 和union all。

union all 和 union 不同之處在於 union all 會將每乙個符合條件的資料都列出來,無論資料值有無重複。

--合併重複行

select * from a

union

select * from b

--不合併重複行

select * from a

union all

select * from b

提示:兩個表查詢的結果相同,才能進行合併

4.sql隨機排序

使用order by newid()

select * from testtable order by newid()

5.其他

歡迎各位補充~

一些常用的 sql語句總結

查詢賣最好的商品名稱 select goods name from indent detail group by goods id order by sum goods num limit 1 查詢張三購買過的商品名稱 select goods name from user join indent ...

MySQL的一些常用SQL語句

備份表 create table 新錶 select from 舊表 建立臨時表 create temporary table tablename id varchar 100 name varchar 100 age varchar 100 刪除臨時表 drop temporary table i...

關於一些常用的SQL語句

增加欄位並標明備註 alter table test add test name varchar 220 comment 名稱 刪除的話,在實際情況中最好不要刪除資料,可以增加棄用的狀態去控制 表備份 備份test 表生成test new 新錶的命名根據你們的具體要求來 create table t...