1、left join和join
join:展示两张表符合on条件的数据
left join:把连接的两张表的列并起来展示,左表展示所有数据行,右表展示符合on条件的数据,不符合的以null展示。要注意的是,如果左表中的on条件对应的字段,在右表对应多条数据,那么最终两表结合展示的数据就会变多(比如连接条件为rowguid,左表的某一条数据的rowguid对应右表的guid有8条数据,那么实际也会展示出8条数据)
right join:类比 left join
2、列表数据重复,翻页有很多重复数据,row_id重复
ROW_NUMBER() over(order by Row_ID) as row_id
3、判断数据库某个字段是否是文字,及强转decimal
cast(zhongbiaoprice as decimal(18,2)) --强转
ISNUMERIC(ZhongBiaoPrice) --如果是数字(包括小数点和逗号),返回1,否则返回0
4、查看数据表中已经建立的索引
----传入表名即可,比如我这里传的是user表
exec sp_helpindex 'user'
5、STUFF函数的使用
---表示将abc这个字符串,从第二个位置开始,删除1个元素,然后在删除的起始位置插入后面的字符串iiii,下诉最终结果是aiiiic
select STUFF('abc',2,1,'iiii')
6、查询最近执行的sql语句
Select TOP 1000
ST.text AS '执行的SQL语句',
QS.execution_count AS '执行次数',
QS.total_elapsed_time AS '耗时',
QS.total_logical_reads AS '逻辑读取次数',
QS.total_logical_writes AS '逻辑写入次数',
QS.total_physical_reads AS '物理读取次数',
QS.creation_time AS '执行时间' ,
QS.*
FROM sys.dm_exec_query_stats QS
CROSS APPLY
sys.dm_exec_sql_text(QS.sql_handle) ST
Where QS.creation_time > dateadd(minute,-1,GETDATE())
7、分组后,将分组的数据每一行各字段进行拼接,然后再将所有的行拼接成一条数据
select
(select name + ',' + shenfenzheng + ',' + DanWei + ';' from kk_test b where
b.proguid = a.proguid for xml path(''))
from kk_test a group by proguid
上面这个查出来的结果,比如按照proguid 分组后,该组有两条记录,则如下
xxx,324232323423423,单位甲;xxx,3333233243254,单位乙;
8、把数据库中的科学计数法转为数字
-----比如某个傻屌把金额类的给的字符串类型nvarchar(50),结果存了个这样的值 2.42432E7
-----通过下面的手段转换
convert(nvarchar(50),convert(decimal(18,6),convert(float,zhongbiaomoney)))
9、快速查看表结构
----如下即可
sp_help testtable
----查详细的结构信息
select column_name,data_type,CHARACTER_MAXIMUM_LENGTH from information_schema.columns
where lower(table_name) = 'kk_test'
10、两张表,根据第一张表的标识,查询第二张表的数据并针对第二张表产生序号,图例如下:
kk_proinfo表和kk_bdinfo表关联,要拿到bd的序号

做法思路是,先使用row_number()函数,根据proguid查出表kk_bdinfo所有的数据,并根据标段表的row_id产生序号,然后外层再做一次查询,查询出这些序号以及对于的row_id,最后再根据row_id查询对于的序号即可实现,具体sql如下
----关联获取bd的序号,注意这里使用row_number函数时的row_id的排序规则
----要与最终的order by 排序规则一致
----否则会出现查询出的数据排序是乱的
select pro.prono,bd.bdno,
(select aa.xh from(select ROW_NUMBER() OVER(ORDER BY bdinfo.row_id asc) xh,row_id id
from kk_bdinfo bdinfo where bdinfo.proguid=bd.proguid) aa where aa.id=bd.row_id)
bdxh
from cg_proinfo pro
join cg_bdinfo bd on pro.proguid = bd.proguid order by bd.proguid,bdxh asc