是这样的,从数据库抽取30个单选题,10个多选,10个判断
一种一种的抽取很简单(select top * from test where typename='单选',然后多选,然后判断)
想问问一块抽取的话有没有办法
大家帮忙看看~
我那种方法的就不用说了...
谢谢
一种一种的抽取很简单(select top * from test where typename='单选',然后多选,然后判断)
想问问一块抽取的话有没有办法
大家帮忙看看~
我那种方法的就不用说了...
谢谢
调试欢乐多
服务器: 消息 156,级别 15,状态 1,行 2
在关键字 'union' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 4
在关键字 'union' 附近有语法错误。
不行呢。。我用的MSSQL
select * from test where typename='单选' order by rand() limit 30
union
select * from test where typename='多选' order by rand() limit 10
union
select * from test where typename='判断' order by rand() limit 10
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: 'limit' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 3
第 3 行: 'limit' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 5
第 5 行: 'limit' 附近有语法错误。还是不行
不是 mysql啊 是MSSQL 2000
)
UNION ALL
SELECT * FROM (select * from test where typename='多选' order by newid()
)
试试看
)
UNION ALL
SELECT * FROM (select * from test where typename='多选' order by newid()
)
UNION ALL
SELECT * FROM (select top 10* from test where typename='判断' order by newid())
刚才少了一个 呵呵
union all
select top 10 * from exam_test where testtype=1 order by newid()
union all
select top 10* from exam_test where testtype=2 order by newid()我是这样写的 testtype =0 就是单选 1多选 2判断
报错:
服务器: 消息 156,级别 15,状态 1,行 2
在关键字 'union' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 4
在关键字 'union' 附近有语法错误。然后这个
select * from exam_test where testtype=0 order by rand() limit 30
union
select * from exam_test where testtype=1 order by rand() limit 10
union
select * from exam_test where testtype=2 order by rand() limit 10报错:
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: 'limit' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 3
第 3 行: 'limit' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 5
第 5 行: 'limit' 附近有语法错误。
union
select top 10 * from exam_test where testtype=1 order by newid()
union
select top 10 * from exam_test where testtype=2 order by newid()try
union
select top 10 * from exam_test where testtype=1 order by newid()
union
select top 10* from exam_test where testtype=2 order by newid()服务器: 消息 156,级别 15,状态 1,行 2
在关键字 'union' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 4
在关键字 'union' 附近有语法错误。SELECT * FROM (select top 30 * from exam_test where testtype=0 order by newid())
UNION ALL
SELECT * FROM (select top 10 * from exam_test where testtype=1 order by newid())
UNION ALL
SELECT * FROM (select top 10 * from exam_test where testtype=2 order by newid())服务器: 消息 156,级别 15,状态 1,行 2
在关键字 'UNION' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 4
在关键字 'UNION' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 5
第 5 行: ')' 附近有语法错误。还是不行 奇怪~ 你们那能行吗?
sorry
MS SQL 是有nuion的,你可以查一下帮助
union
试试我那个吧。
mssql有union的 别怀疑 呵呵
UNION 运算符使您得以将两个或多个 SELECT 语句的结果组合成一个结果集。使用 UNION 组合的结果集都必须具有相同的结构。而且它们的列数必须相同,并且相应的结果集列的数据类型必须兼容。有关更多信息,请参见 UNION 运算符使用指南。UNION 的指定方式如下:select_statement UNION [ALL] select_statement例如,Table1 和 Table2 具有相同的两列结构。Table1 Table2
ColumnA ColumnB ColumnC ColumnD
char(4) int char(4) int
------- --- ------- ---
abc 1 ghi 3
def 2 jkl 4
ghi 3 mno 5 下面的查询在这两个表之间创建 UNION 运算:SELECT * FROM Table1
UNION
SELECT * FROM Table2下面是结果集:ColumnA ColumnB------- --------abc 1def 2ghi 3jkl 4mno 5UNION 的结果集列名与 UNION 运算符中第一个 SELECT 语句的结果集中的列名相同。另一个 SELECT 语句的结果集列名将被忽略。默认情况下,UNION 运算符从结果集中删除重复的行。如果使用 ALL 关键字,那么结果中将包含所有行并且将不删除重复的行。 UNION 运算的准确结果取决于安装过程中选择的排序规则和 ORDER BY 子句。有关不同排序规则的效果的更多信息,请参见 SQL Server 排序规则基础知识。Transact-SQL 语句中可以出现任意数目的 UNION 运算符,例如:SELECT * FROM TableA
UNION
SELECT * FROM TableB
UNION
SELECT * FROM TableC
UNION
SELECT * FROM TableD
默认情况下,Microsoft® SQL Server™ 2000 从左到右对包含 UNION 运算符的语句进行取值。使用圆括号指定求值的顺序。例如,以下语句并不等价:/* First statement. */
SELECT * FROM TableA
UNION ALL
(
SELECT * FROM TableB UNION SELECT * FROM TableC
)
GO
/* Second statement. */
(SELECT * FROM TableA UNION ALL SELECT * FROM TableB)
UNION
SELECT * FROM TableC)
GO
在第一个语句中,将消除 TableB 和 TableC 之间的联合中的重复行。而在该集与 TableA 之间的并集中,不消除重复行。在第二个语句中,TableA 和 TableB 之间的联合中包含重复行,但在随后与 TableC 的联合中将消除。ALL 关键字对此表达式的最终结果没有影响。如果使用 UNION 运算符,那么单独的 SELECT 语句不能包含其自己的 ORDER BY 或 COMPUTE 子句。只能在最后一个 SELECT 语句的后面使用一个 ORDER BY 或 COMPUTE 子句;该子句适用于最终的组合结果集。GROUP BY 和 HAVING 子句只能在单独的 SELECT 语句中指定。
LZ还是写3个SELECT吧,一次执行返回3个结果集就是了
)
UNION ALL
SELECT * FROM (select * from test where typename='多选' order by newid()
)
UNION ALL
SELECT * FROM (select top 10* from test where typename='判断' order by newid())
是这个吗
union all
select top 10 * from exam_test where testtype=2
union all
select top 10* from exam_test where testtype=3这样能行就是不能随机了 看来只能一个一个来了
(select top 30 * from exam_test where testtype=0 order by newid()) as a
UNION ALL
SELECT * FROM
(select top 10 * from exam_test where testtype=1 order by newid()) as b
UNION ALL
SELECT * FROM
(select top 10 * from exam_test where testtype=2 order by newid()) as ctry it again,if it does not work still,i have no idea any more.
select top 30 * from exam_test where testtype=0
union
select top 10 * from exam_test where testtype=1
union
select top 10 * from exam_test where testtype=2
这样就可以了
去掉 order by
error msg:如果语句中包含 UNION 运算符,那么 ORDER BY 子句中的项就必须出现在选择列表中。
(select top 30 * ,NewID = NEWID() from exam_test where testtype=0 order by newid()) as a
UNION ALL
SELECT * FROM
(select top 10 * ,NewID = NEWID() from exam_test where testtype=1 order by newid()) as b
UNION ALL
SELECT * FROM
(select top 10 * ,NewID = NEWID() from exam_test where testtype=2 order by newid()) as c
SELECT * FROM
(select top 10 newid() as f,* from test where typename='单选' order by f) as a
UNION ALL
SELECT * FROM
(select top 10 newid() as f,* from test where typename='单选' order by f) as b
UNION ALL
SELECT * FROM
(select top 10 newid() as f,* from test where typename='单选' order by f) as c