SQL語句集合

2021-08-09 22:17:14 字數 2590 閱讀 9229

記錄下平時寫的稍微複雜點的sql

#說明 a b是一對多關係 乙個a有多個b 查詢a中已有b的且狀態不是11020403的a資料

select * from a where id not

in(select id from b where cp_status <> '11020403'

group

by id) and id in (select id from b group

by id)

--exists和1

in效果相同

select * from a

where

exists(select

1from b where id=a.id)

andnot

exists (select

1from b where id=a.id and cp_status<>'11020403')

sql執行時間

declare

@v_a datetime;

declare

@v_b datetime;

set@v_a=

getdate()

;select * from

a;set

@v_b = getdate()

;select

datediff(ms,@v_a,@v_b) as '用時/毫秒'

發現exists比in要快那麼一點

#儲存過程裡的賦值語句,當結果有多條時,賦值的是最後一條的值

select @v_new_name = param_name from qlc_tintparam where param_value = '3'

當用group by後想查結果的條數,發現count(*)是計算每組的條數

用select count(distinct trade_no) from b 能得到組數

#sqlserver中可用case when來實現結果轉換

(case when a.verify_state = 0

then n'未核對'

when a.verify_state = 1

then n'已核對'

else n'核對有誤'

end) as verify_state_nam

--判斷是否有欄位 來加欄位

if not exists(select

1from syscolumns where id = object_id('abcd') and name = 'flow_id')

alter

table abcd add flow_id int

null

go--新增檢視

ifexists (select

1from sysobjects where name = 'v_qlc')

drop

view v_qlc

gocreate

view v_qlc

as

#插入資料並返回主鍵

strsql = "insert

into tablename (name) values (@name);

select @@identity

"

select d.*, (select

cast(list_id as nvarchar(30))+','

where a.loan_id = b.loan_id and a.contract_id = c.contract_id and a.deal_flag = 1

and a.problem_id ='ue3df3a1063411e8a3be2c337a1a91d6'

and b.product_id = d.product_id and a.contract_id = d.contract_id and a.trade_no = d.trade_no and a.acc_date = d.acc_date

for xml path('')) list_id_str from

(select b.product_id, a.contract_id, a.trade_no, a.acc_date, isnull(c.toll_flag,0) as toll_flag ,sum(isnull(a.acc_money,0)) acc_money,sum(isnull(a.tax_base,0)) tax_base,sum(isnull(a.tax,0)) tax

where a.loan_id = b.loan_id and a.contract_id = c.contract_id and a.problem_id = 'ue3df3a1063411e8a3be2c337a1a91d6'

group

by b.product_id, a.contract_id, a.trade_no, a.acc_date,c.toll_flag) d

– for xml path(」)) list_id_str ,能得到不groupby 參與的字串集合

sql語句集合

新增注釋 給資料庫表新增注釋 comment on table 表名 is 注釋 給表字段新增注釋 comment on column 表名.欄位名 is 注釋 修改表結構 增加字段 alter table 使用者名稱 如果需要 表名 add 欄位名 資料型別 修改字段型別 alter table ...

SQL 語句集合

where 子句 操作符 描述 等於 不等於 where 子句 大於 小於 大於等於 小於等於 between 在某個範圍內 like 搜尋某種模式 備註 在某些版本的 sql 中,操作符 可以寫為 sql 使用單引號來環繞文字值 大部分資料庫系統也接受雙引號 如果是數值,請不要使用引號。例如 如果...

SQL語句 操作集合

保留小數字數 select cast 列名as 數值型別,如decimal,numeric等 長度,小數點後位數 列名 from 表名 例 select cast sid as decimal 18,2 sid from user case 用法 單條件 select case xx when nu...