日度归档:2019年10月15日

mssql sqlserver select查询数据时”添加自增列”的两种方法分享


摘要:
下文讲述sqlserver中select查询数据时,同时添加自增里的方法分享,如下所示:
实验环境:sql server 2008 R2

例:

create table [maomao365.com]
(info varchar(20))
go

insert [maomao365.com]
(info)values('sqlserver'),
(N'猫猫小屋'),(N'sql爱好者')
go

  --方法1:使用row_number生成自编号
  select ROW_NUMBER() over(order by info asc ) as [自编号],
  info from [maomao365.com]

  --方法2: 使用identity(1,1)生成自编号
  select identity(int,1,1) as [自编号]
  ,info  into #t  from [maomao365.com] 
  select * from #t 
   order by info asc 



go
truncate table [maomao365.com]
drop     table [maomao365.com]
mssql_sqlserver_生成自编号的两种方法

mssql_sqlserver_生成自编号的两种方法

MySQL 数据表中返回当天写入数据的方法分享


摘要:
下文讲述MySQL数据库中查询当前录入巨鹿的方法分享

例:
MySQL 数据库中 数据表”maomao365.com”,createDate 为写入时间,
现在需查询出当前录入的所有记录的方法分享,如下所示:

  
     select * from `maomao365.com`
	   where `createDate` = DATE(NOW());
	   ----或采用以下脚本
     SELECT * FROM `maomao365.com`  
	    WHERE `createDate` > DATE_SUB(CURDATE(),INTERVAL 1 DAY);
  

MySQL数据库中随机查询指定条数高效方法分享


摘要:
下文讲述MySQL数据库中随机查询指定条数的方法分享,如下所示;

    SELECT * FROM `tableName` ORDER BY RAND() LIMIT 8

以上脚本在一个20万条的数据表中,查询整整用了10秒以上,这种查询数据的效率是否低下
经过多方查询资料,发现采用以下方式,查询效率更加高效

   SELECT * FROM `tableName` AS a JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `tableName`)) AS id) AS b
       WHERE a.id >= b.id
     ORDER BY a.id ASC LIMIT 8; 
  --此种方式可以达到快速查询数据的方法,但是弊端是可以快速的查询出数据,耗时页非常少0.01秒都不到,
  --但是缺点是 是返回一个连续的数据

为了做到真真的随机数,我们可以运行下面的sql脚本进行多次运行

 
SELECT * FROM `tableName`
WHERE id >= select (FLOOR(RAND()*(SELECT  MAX(id) FROM `tableName` )))
ORDER BY id LIMIT 1;
union all 
SELECT * FROM `tableName`
WHERE id >= select (FLOOR(RAND()*(SELECT  MIN(id) FROM `tableName` )))
ORDER BY id LIMIT 1;