SQL語句收集

1、需要把某個字段中的括號及括號中的內容去掉

UPDATE 表 SET name=(case

when instr(name,'(') and instr(name,')') then concat(left(name,instr(name,'(')-1),substr(name, instr(name,')')+1))
when instr(name,'(') then  left(name, instr(name, '(')-1)
when instr(name, ')') then  substr(name, instr(name, ')')+1)

else
name
end) WHERE name like "%(%"

2.分頁
表中主鍵必須為標識列,[ID] int IDENTITY (1,1)

1.分頁方案一:(利用Not In和SELECT TOP分頁)

語句形式:
SELECT TOP 頁記錄數量 *
FROM 表名
WHERE (ID NOT IN
(SELECT TOP (每頁行數*(頁數-1)) ID
FROM 表名
ORDER BY ID))
ORDER BY ID
//自己還可以加上一些查詢條件

例:
select top 2 *
from Sys_Material_Type
where (MT_ID not in
(select top (2*(3-1)) MT_ID from Sys_Material_Type order by MT_ID))
order by MT_ID

2.分頁方案二:(利用ID大于多少和SELECT TOP分頁)

語句形式:
SELECT TOP 每頁記錄數量 *
FROM 表名
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 每頁行數*頁數 id FROM 表
ORDER BY id) AS T)
)
ORDER BY ID

例:
SELECT TOP 2 *
FROM Sys_Material_Type
WHERE (MT_ID >
(SELECT MAX(MT_ID)
FROM (SELECT TOP (2*(3-1)) MT_ID
FROM Sys_Material_Type
ORDER BY MT_ID) AS T))
ORDER BY MT_ID

3.分頁方案三:(利用SQL的游標存儲過程分頁)
create procedure SqlPager
@sqlstr nvarchar(4000), --查詢字符串
@currentpage int, --第N頁
@pagesize int --每頁行數
as
set nocount on
declare @P1 int, --P1是游標的id
@rowcount int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1, @rowcount=@rowcount output
select ceiling(1.0@rowcount/@pagesize) as 總頁數--,@rowcount as 總行數,@currentpage as 當前頁
set @currentpage=(@currentpage-1)
@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off

4.總結:
其它的方案:如果沒有主鍵,可以用臨時表,也可以用方案三做,但是效率會低。
建議優化的時候,加上主鍵和索引,查詢效率會提高。

通過SQL 查詢分析器,顯示比較:我的結論是:
分頁方案二:(利用ID大于多少和SELECT TOP分頁)效率最高,需要拼接SQL語句
分頁方案一:(利用Not In和SELECT TOP分頁) 效率次之,需要拼接SQL語句
分頁方案三:(利用SQL的游標存儲過程分頁) 效率最差,但是最為通用

5.刪除重復數據
DELETE FROM t_extract_map
WHERE id in (
SELECT a.id from
( SELECT id from t_extract_map WHERE
(name,address) IN (
SELECT
name,
address
FROM
t_extract_map
GROUP BY
name,
address
HAVING
count() > 1
)
AND id NOT IN (
SELECT
min(id)
FROM
t_extract_map
GROUP BY
name,
address
HAVING
count(
) > 1
)
) as a
)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 模式 定義模式實際上定義了一個命名空間,在這個空間中 可以進一步 定義該模式包含的數據對象,例如基本表,視圖,索引...
    iOS_愛OS閱讀 916評論 0 1
  • 一、基礎 1、創建數據庫(create) CREATE DATABASE database-namecreate ...
    YBshone閱讀 654評論 0 1
  • 堅持來自于內心深處的信念,來自于對自已的一種承諾,從初出道一個懵懵懂懂的青年,到如今一個還算成熟的大叔,不能說閱盡...
    黃健歌閱讀 305評論 0 0
  • 《西游記》第五十回里, 唐僧趕路趕累了,讓孫悟空去化齋, 孫悟空即用金箍棒,將那平地下周圍畫了 一道圈子, ...
    將心獨韻閱讀 11,489評論 0 1
  • 錦瑟無端五十弦,輪回四季一華年。 梨花片片黃蜂舞,菡萏尖尖彩蝶翩。 颯颯秋風依榻憩,飄飄冬雪伴書眠。 泱泱大地風光...
    萬子云閱讀 458評論 2 3