日度归档:2019年11月9日

mssql sqlserver 使用sql脚本查询指定数据库下 数据表个数 视图个数 表名方法分享


摘要:
下文讲述sql server中使用sql脚本获取数据库的一些基本信息的方法分享,如下所示;
实验环境:sql server 2008R2


实现思路:
通过查询 系统表sysobjects,检索出表个数、视图个数的方法

 
---sql server 表个数:
select count(1) from sysobjects where xtype='U'

---sqlserver 视图个数:
select count(1) from sysobjects where xtype='V'

----sql server 存储过程个数:
select count(1) from sysobjects where xtype='P'

---sql server 所有表列表
SELECT * FROM INFORMATION_SCHEMA.TABLES

----指定表字段
SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID('表名')


SELECT * FROM INFORMATION_SCHEMA.TABLES

---view所有信息 包括视图的定义内容
SELECT * FROM INFORMATION_SCHEMA.VIEWS

---所有列信息
SELECT * FROM INFORMATION_SCHEMA.COLUMNS

mssql sqlserver 如何编写case when 多条件呢?


摘要:
下文讲述case when中多条件的编写方法,如下所示:
实验环境:sql server 2008 R2


case when 多条件编写方法

case when多条件编写语法:
—————————————–
case
when 条件1 and 条件2 then ‘1’
when 条件1 and 条件2 then ‘1’
else
end
——————————————


case when 多条件编写举例

  create table [maomao365.com]
 (keyId int identity,
  xingBie  varchar(100)
  )
  go

  insert into [maomao365.com]
  (xingbie)values('1'),
  ('0'),('1')
  ,('1'),('2')
  go

  select 
  keyId,
  case  
     when xingBie ='1' or xingBie ='2' 
	  then N'性别'
	 when xingBie ='0' 
	  then N'未填写!'
	 else ''
	 end as xingBie  
 from [maomao365.com]




  go
  truncate table [maomao365.com]
  drop     table [maomao365.com]
 

MySQL 数据库查询数据,过滤重复数据保留一条数据—(MySQL中的row_number变相实现方法)


摘要:
下文讲述MySQL数据库查询重复数据时,只保留一条数据的方法


实现思路:
在MySQL数据库中没有row_number函数,所以我们需变向实现此功能。

  ---1.基础数据表查看
  mysql> select * from `maomao365.com`;
+-------+------------+
| keyId | infoB      |
+-------+------------+
|     1 | mysql test |
|   129 | sql        |
| 12913 | sql        |
| 12913 | sql        |
| 12913 | sql        |
+-------+------------+
5 rows in set (0.00 sec)

---2 群组编号
mysql> select if(@keyId=a.keyId and @infoB=a.infoB,@r:=@r+1,@r:=1) as rowNumber,a.*,@keyId:=a.keyId,@infoB:=a.infoB
    -> from (select @keyId:=null,@infoB:=null,@r:=0) r, (select keyId,infoB from `maomao365.com` order by keyId) a;
+-----------+-------+------------+-----------------+-----------------+
| rowNumber | keyId | infoB      | @keyId:=a.keyId | @infoB:=a.infoB |
+-----------+-------+------------+-----------------+-----------------+
|         1 |     1 | mysql test |               1 | mysql test      |
|         1 |   129 | sql        |             129 | sql             |
|         1 | 12913 | sql        |           12913 | sql             |
|         2 | 12913 | sql        |           12913 | sql             |
|         3 | 12913 | sql        |           12913 | sql             |
+-----------+-------+------------+-----------------+-----------------+
5 rows in set (0.00 sec)

---3 重复数据只显示一条
mysql> select * from (select if(@keyId=a.keyId and @infoB=a.infoB,@r:=@r+1,@r:=1) as rowNumber,a.*,@keyId:=a.keyId,@infoB:=a.infoB
    -> from (select @keyId:=null,@infoB:=null,@r:=0) r, (select keyId,infoB from `maomao365.com` order by keyId) a
    -> ) as t where t.rowNumber =1;
+-----------+-------+------------+-----------------+-----------------+
| rowNumber | keyId | infoB      | @keyId:=a.keyId | @infoB:=a.infoB |
+-----------+-------+------------+-----------------+-----------------+
|         1 |     1 | mysql test |               1 | mysql test      |
|         1 |   129 | sql        |             129 | sql             |
|         1 | 12913 | sql        |           12913 | sql             |
+-----------+-------+------------+-----------------+-----------------+
3 rows in set (0.00 sec)


定义临时变量 @keyId,@infoB
每次查询时 都重新对 @keyId,@infoB 赋值
在赋值前,都采用If对其进行判断,如果当前行记录信息和临时变量中的值相同时,则作为相同数据@r变量加1,否则@r变量变为1
采用以上模式,可以将重复的行记录进行编号

最后对重新编号后的记录,检索出row_number等于1的信息

mysql_row_number变相实现方法分享

mysql_row_number变相实现方法分享