A. 用sql语句实现随机查询数据并不显示错误数据的方法
问题:上级单位要来检查数据,我的服务器的数据库是SQL server 2000,上级单位要求我用SQL语句在服务器端随机查询50条数据出来。可是我的服务器里有些错误数据不希望他们看到,能不能有什么办法不让他们看到。
SQL语句: select top 50 x from a_1 where c=xxxx
语句就是要求这样写,然后他们来运行,怎么办,有什么办法可以在sql server上设置,然后使得这50条数据只在我找出的数据(比如正确的数据400)里随机查询出。尽量不要改动SQL语句。
Peak Wong:
可用视图:
对方抽取时:
select top 50 * from t_view --视图名
order by newID()
在生成视图时,把不显示出来的排除。视图在查询时,也就是一个表名的方式//只要对方不知道数据库表就行了。
SQL code
复制代码
代码如下:
select top 10 ID,Name
into T--生成测试表
from sysobjects
go
create view Test--生成视图名
as
select * from T where ID>5
go
select top 2 * from test order by newID()--随机取两条
说明:视图名,最好与表名比较相似就行了。create view Test--生成视图名
with ENCRYPTION--加密一下,让对方看不到你的视图语句
as
select * from T where ID> 5
go
本篇文章来源于 站长资讯网 原文链接:http://sqlserver.chinahtml.com/2007/119613367717217.shtml
B. sqlserver 根据同一表同一字段的不同数据随机查询
select*from(
selecttop3*,NewID()=4
union
selecttop3*,NewID()=5
union
selecttop3*,NewID()=6
union
selecttop1*,NewID()=7
)aaorderbyrandom
C. 使用SQL语句取随机数的方法
SQL随机查询语句,[数据库使用技巧]SQL语句生成随机数,如何随机显示sql查询语句查询的数据记录集中的20条,随机取出若干条记录的SQL语句,使用SQL语句取随机数的方法
方法如下:
SQL
Server:
Select
TOP
N
*
From
TABLE
order
By
NewID()
Access:
dim
r
randomize
r
=
rnd
sql
=
"select
top
10
*
from
table
order
by
rnd("
&
r
&
"-id)"
rnd("
&
r
&
"-id)
其中的id是自动编号字段,可以利用其他任何数值来完成,比如用姓名字段(UserName)
select
top
10
*
from
table
order
by
rnd("
&
r
&
"-Len(UserName))
MySql:
Select
*
From
TABLE
order
By
Rand()
Limit
10
orACLE:
select
*from
(select
*from
t
order
by
dbms_random.value)
where
rownum<10
D. SQL语句如何实现从数据库表中查询随机数据的记录
数据库的随机查询SQL
1. Oracle,随机查询20条
select * from
(
select * from 表名
order by dbms_random.value
)
where rownum <= 20;
2.MS SQL Server,随机查询20条
select top 20 * from 表名order by newid()
3.My SQL:,随机查询20条
select * from 表名 order by rand() limit 20
E. jsp连接sql server2012怎么做到随机查询N条不同的记录
下文为您介绍的是使用SQL语句查询每个分组的前N条记录的实现方法,如果您在此方面曾经遇到过问题,不妨一看,对您学习SQL语句使用有所帮助。
--> 生成测试数据: #T IF OBJECT_ID('tempdb.dbo.#T') IS NOT NULL DROP TABLE #T CREATE TABLE #T (ID VARCHAR(3),GID INT,Author VARCHAR(29),Title VARCHAR(39),Date DATETIME) INSERT INTO #T SELECT '001',1,'邹建','深入浅出SQLServer2005开发管理与应用实例','2008-05-10' UNION ALL SELECT '002',1,'胡百敬','SQLServer2005性能调校','2008-03-22' UNION ALL SELECT '003',1,'格罗夫Groff.J.R.','SQL完全手册','2009-07-01' UNION ALL SELECT '004',1,'KalenDelaney','SQLServer2005技术内幕存储引擎','2008-08-01' UNION ALL SELECT '005',2,'Alex.Kriegel.Boris.M.Trukhnov','SQL宝典','2007-10-05' UNION ALL SELECT '006',2,'飞思科技产品研发中心','SQLServer2000高级管理与开发','2007-09-10' UNION ALL SELECT '007',2,'胡百敬','SQLServer2005数据库开发详解','2008-06-15' UNION ALL SELECT '008',3,'陈浩奎','SQLServer2000存储过程与XML编程','2005-09-01' UNION ALL SELECT '009',3,'赵松涛','SQLServer2005系统管理实录','2008-10-01' UNION ALL SELECT '010',3,'黄占涛','SQL技术手册','2006-01-01'UNION ALL SELECT '010',4,'黄蛋蛋','SQL技术手册蛋蛋','2006-01-01' --SQL查询如下: --按GID分组,查每个分组中Date最新的前2条记录 select * from #T --1.字段ID唯一时: SELECT * FROM #T AS T WHERE ID IN(SELECT TOP 3 ID FROM #T WHERE GID=T.GID ORDER BY Date DESC) --2.如果ID不唯一时: SELECT * FROM #T AS T WHERE 2>(SELECT COUNT(*) FROM #T WHERE GID=T.GID AND Date>T.Date) --SQL Server 2005 使用新方法 --3.使用ROW_NUMBER()进行排位分组 SELECT ID,GID,Author,Title,Date FROM ( SELECT rid=ROW_NUMBER() OVER(PARTITION BY GID ORDER BY Date DESC),* FROM #T ) AS T WHERE rid<=2 --4.使用APPLY SELECT DISTINCT b.* FROM #T AS a CROSS APPLY ( SELECT TOP(2) * FROM #T WHERE a.GID=GID ORDER BY Date DESC ) AS b select * from #T
F. (sqlserver)表中有个a是随机1到10的数字,现在要查询出以下东西
select a,count(a) 次数
from 表
group by a
order by count(a) desc
--如果你这是sql2005就用
row_num() over() 来处理名次。但我这没环境也没试
--下面这是另种方法
declare @t table(a int,b int,c int identity(1,1))
insert into @t(a,b)
select a,count(a) 次数
from 表
group by a
order by count(a) desc
select * from @t
G. sqlserver 两表查询1对多,随机取一条数据 求sql语句
你两个表的 [track artist] 各弄出一点贴出来看看
主要是看看 要用 like 还是要用 = 号
或者是有什么明显的特征
如果是有相同的 那么就简单了
UPDATEruSETisrc=(SELECTTOP1isrcfromjibiaowhere[artist]=ru.[artist])
你要更新多歌字段 就参考这个去修改一下
H. SQL、MySQL、Oracle随机查询语句
关于SQL Server SQL语句查询分页数据的解决方案:要求选取 tbllendlist 中 第3000页的记录,每一页100条记录。-----------------------------------方法1:----------select top 100 * from tbllendlistwhere fldserialNo not in(select top 300100 fldserialNo from tbllendlistorder by fldserialNo)order by fldserialNo----------方法2:----------SELECT TOP 100 *FROM tbllendlistWHERE (fldserialNo >(SELECT MAX(fldserialNo)FROM (SELECT TOP 300100 fldserialNoFROM tbllendlistORDER BY fldserialNo) AS T))ORDER BY fldserialNo方法1执行速度比较快!不过,这种做法还是很麻烦,强烈期待微软发明新的可分页的SQL语句来!!!!SQL Server ---------------------------------------------------------------------------------从数据库表中的第M条记录开始取N条记录,利用Top关键字:注意如果Select语句中既有top,又有order by,则是从排序好的结果集中选择:SELECT *FROM ( SELECT Top N *FROM (SELECT Top (M + N - 1) * FROM 表名称 Order by 主键 desc) t1 ) t2Order by 主键 asc例如从表Sys_option(主键为sys_id)中从10条记录还是检索20条记录,语句如下:SELECT *FROM ( SELECT TOP 20 *FROM (SELECT TOP 29 * FROM Sys_option order by sys_id desc) t1) t2Order by sys_id ascOralce数据库--------------------------------------------------------------------------------从数据库表中第M条记录开始检索N条记录SELECT *FROM (SELECT ROWNUM r,t1.* From 表名称 t1 where rownum < M + N) t2where t2.r >= M例如从表Sys_option(主键为sys_id)中从10条记录还是检索20条记录,语句如下:SELECT *FROM (SELECT ROWNUM R,t1.* From Sys_option where rownum < 30 ) t2Where t2.R >= 10如果你对Oracle数据库分页不是很熟悉的话,本页后面有专门对Oracle分页技术的讲解。My sql数据库---------------------------------------------------------------------------------------------My sql数据库最简单,是利用mysql的LIMIT函数,LIMIT [offset,] rows从数据库表中M条记录开始检索N条记录的语句为:SELECT * FROM 表名称 LIMIT M,N例如从表Sys_option(主键为sys_id)中从10条记录还是检索20条记录,语句如下:select * from sys_option limit 10,20TAG: racle RACLE Server server SERVER sql SQL
I. 随机查询数据库中的10填信息用sql语句应该怎么写求高手帮忙!!
为什么不先产生 10 个随机数,然后根据这10个随机数再去取对应的行呢,比如2,4,100……你就可以取2,4,100行
J. sqlserver查询结果中增加和一个随机序列怎么做
select abs(checksum(newID())%100000) as No,Name from sysobjects where xtype='U'