分类 SQL 下的文章

无限级结构SQL查询所有下级和所有下级

Id,PId无限级结构,查询某个Id的所有下级或所有上级,使用WITH AS查询:

/*查找Id为1所有的下级*/
WITH T
AS( 
    SELECT Id,PId,Name,0 L FROM User WHERE Id=1
    UNION ALL 
    SELECT U.Id,U.PId,U.Name,L+1   
    FROM User U INNER JOIN T ON U.PId=T.Id  
) 
SELECT * FROM T

/*查找Id为100所有的上级*/
WITH T
AS( 
    SELECT Id,PId,Name,0 L FROM User WHERE Id=100
    UNION ALL 
    SELECT U.Id,U.PId,U.Name,L+1   
    FROM User U INNER JOIN T ON U.Id=T.PId  
) 
SELECT * FROM T

SQL server中多列数据有NULL值时如何汇总

在一个表中,假如有两个数值字段a,b,这两个字段每一行的值要合并成一个字段C,SQL语句写法:a + b AS c

如果字段b那一列有一行的值为NULL,按上面语句写法合并成c后,那一行会显示NULL,此时应该把NULL处理为0,加起来的数据才对头。

SQL server中多列数据有NULL值时如何汇总.png

有2种处理办法:

1,用SQL server内置函数ISNULL(参数1,参数2),判断参数1是否为NULL,如果是,返回参数2,否则返回参数1。

具体写法:SELECT a + ISNULL(b,0) AS c FROM xxoo...

2,用case when then else end语句

具体写法:SELECT a + (case when b is null then 0 else b end) AS c FROM xxoo...

SQL Server查询一个数据库中有多少个表以及想要的表

使用SQL语句如下:

use 数据库名
select count(1) from sysobjects where xtype='U'

1,xtype参数的含义:U表示用户表,S表示系统表,V表示视图,P表示存储过程
2,如果想要把表列出来,把count(1)换成*
3,如果想要查出具有相同特征的表,继续在where后面加and条件即可。