
在Access数据库中设置查询窗口步骤如下:
1、首先,打开access 2007应用程序,并选择一个数据库打开。
2、双击数据库中的一个表名,打开该数据表的数据表视图。
3、在工具栏依次点击“创建”——“查询设计”,打开查询设计窗口。
4、在查询设计中,点击“关闭”按钮,关闭对话框。
5、再在“查询1”标签上,右击鼠标,d出菜单中选择“SQL视图”。
6、就可以进入“SQL视图”,在“SQL视图”窗口,就可以手动编写sql查询语句,对数据表进行查询 *** 作了。
Access数据库可以通过“select top 10 from tb order by rnd(id)”得到随机数据,VBA环境下使用没有问题,可惜在VB中使用,产生的随机序列是一样的,每次调用返回的数据相同。
有人说在程序中加上Randomize初始化随机种子,那么这只说对了一半,在程序中简单的加上Randomize,是没作用的,道理很简单,Randomize不可能影响SQL语句中的Rnd,这个Rnd只不过是个字符串,SQL语句是通过数据库引擎去执行的,正因为如此,无法初始化种子,致使每次应用产生的随机序列是一样的。
由此可见,解决问题的关键就是如何初始化随机种子。Rnd函数语法是Rnd(number),它有一个特性,就是如果使用了负参数的number,那么就会产生一个固定的随机序列。利用这个特性,我们的问题就迎刃而解了,这就是每次调用Rnd函数时,使用一个负的不同的number,从而达到产生不同随机序列的目的。经过测试,问题解决。示例代码如下:
’
Dim sql As String
Dim r As Single
Randomize
r = Rnd
sql = "select top 1 from tb order by rnd(" & r & "-id)"
’
代码说明:SQL语句中的Rnd的参数是一个数值表达式,必须包含表中的一个字段(最好是主键),因为变量r返回的是一个随机的0到1之间的single,(一般情况下表中的ID值都是大于1的),从而使参数的值是个小于0的随机数,由此产生了不同的随机序列。
补充一点,有一种提议用time来解决这个问题,就是"select top 10 from tb order by rnd(" & time & "- id) "。在某些情况下是可以的,但是,如果你需要快速连续的查询信息,比如一些摇号程序需要连续滚动地显示信息,这种情况下,就会出现连续几次返回重复的信息。究其原因,就是time在做数值运算的时候,会转换为一个小于1的Double,而rnd返回的是一个Single,显然,rnd返回的结果有可能会截去time-id运算后的尾数,在time变化很小的情况下,使rnd返回的值与前次相同,从而返回的查询结果相同。
<%
set rs=serverCreateObject("adodbrecordset")
sql = "select top 1 from [AAA] where a1=2 ORDER BY Rnd(-(id + " & Int((10000 Rnd) + 1) & "))"
rsopen sql,conn,1,1
if rsrecordcount>0 then
do while not rseof
%>
<%
rsmovenext
loop
end if
rsclose
set rs=nothing
%>
在 where 后面自己加判断就是了,条数 top 1 自己修改,10000 是表 AAA 随机抽取10000的记录条数
总的意思段代码就是 随机读取 带条件类型的 数据,如果实在不清楚,请加我的QQ156107320 。
至于是不是你要的东西,你自己试了就晓得了,希望能帮助到你,大家一起学习,分多分少都没关系。
要使用交叉查询
首先你表要增加一个字段,叫“购买序数”,就是购买第一次是1,第二次是2,
TRANSFORM last(表交货数量)
SELECT 表用户
FROM 表
where 表购买序数<=10
GROUP 表用户
PIVOT 表购买序数;
这个查询是:
1:查处所有购买序数在10以内的所有记录(这10次当然是最近的三次),
2:把查出的记录按照用户分组
3:将够买序数作为列标题,求出每个用户在各自10次内的各自购买数量
例如:查询结果
用户 1次, 2 次,3次, 4次, 5次, 6 次,7次, 8 次,9 次,10 次
张 11 , 0, 12, 23 , 24 , 5 , 67 , 88 ,91, 5
李 4 , 5 , 1 , 8 , 6, 10 , 23, 0, 0 , 0
结果的意思是张用户在最近10次购买记录内第一次购买了11个,第二次购买了0个,第三次购买了12个
李用户在10次内第一次购买了4个
我给你弄了半天,也只能做到查出你表内所有用户最近10次购买记录的“购买数量”
不能够查出购买记录的所有字段,想必我的查询是最符合你的意思的了
如果你非要查出所有字段,我建议你用编程序的方法,设置数组来做,如果光靠查询,估计够呛
给分吧,哈哈。。。。。。。。。。
数据库知识—SQL查询语句精华使用简要
一、 简单查询
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
SELECT nickname,email
FROM testtable
WHERE name=张三
(一) 选择列表
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列
例如,下面语句显示testtable表中所有列的数据:
SELECT
FROM testtable
2、选择部分列并指定它们的显示次序
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:
SELECT nickname,email
FROM testtable
3、更改列标题
在选择列表中,可重新指定列标题。定义格式为:
列标题=列名
列名 列标题
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:
SELECT 昵称=nickname,电子邮件=email
FROM testtable
4、删除重复行
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
5、限制返回的行数
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
例如:
SELECT TOP 2
FROM testtable
SELECT TOP 20 PERCENT
FROM testtable
(二)FROM子句
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:
SELECT username,citytablecityid
FROM usertable,citytable
WHERE usertablecityid=citytablecityid
在FROM子句中可用以下两种格式为表或视图指定别名:
表名 as 别名
表名 别名
(二) FROM子句
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:
SELECT username,citytablecityid
FROM usertable,citytable
WHERE usertablecityid=citytablecityid
在FROM子句中可用以下两种格式为表或视图指定别名:
表名 as 别名
表名 别名
例如上面语句可用表的别名格式表示为:
SELECT username,bcityid
FROM usertable a,citytable b
WHERE acityid=bcityid
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。
例如:
SELECT aau_fname+aau_lname
FROM authors a,titleauthor ta
(SELECT title_id,title
FROM titles
WHERE ytd_sales>10000
) AS t
WHERE aau_id=taau_id
AND tatitle_id=ttitle_id
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。
(三) 使用WHERE子句设置查询条件
WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据:
SELECT
FROM usertable
WHERE age>20
WHERE子句可包括各种条件运算符:
比较运算符(大小比较):>、>=、=、、!>、!=10 AND age、>=、、!。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:
SELECT
FROM authors AS a INNER JOIN publishers AS p
ON acity=pcity
又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和state):
SELECT a,ppub_id,ppub_name,pcountry
FROM authors AS a INNER JOIN publishers AS p
ON acity=pcity
(二)外连接
内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。如下面使用左外连接将论坛内容和作者信息连接起来:
SELECT a,b FROM luntan LEFT JOIN usertable as b
ON ausername=busername
下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在的城市:
SELECT a,b
FROM city as a FULL OUTER JOIN user as b
ON ausername=busername
(三)交叉连接
交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等于68=48行。
SELECT type,pub_name
FROM titles CROSS JOIN publishers
ORDER BY type
以上就是关于怎样在Access数据库中设置查询窗口全部的内容,包括:怎样在Access数据库中设置查询窗口、我用VC在ACCESS里随即抽取10条记录 select top 10*from table order by rnd(ID); 但是每次都是一样的10条、在Access数据库中随机取一条指定条件的记录的方法~等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)