【SQL】随机从数据库取值的时候必须有我指定的数据出现
表A 30行 数据 随机抽取10数据 10个数据里面 有2个是 我指定必须出现的。请教大牛们。要怎么写。 我可以增加一列 mak 来标示 我指定的这两个必须抽取。还是什么方法? --------------------编程问答-------------------- 可以这样
select ArticleId, Title,CreateDate from (SELECT top 2 * FROM [Article] Where ArticleId < 10 Order By NewId()) AS A
UNION
select ArticleId,Title,CreateDate from (SELECT top 8 * FROM [Article] Where ArticleId > 10 Order By NewId()) AS B
ArticleId < 10
只是例子,你可以改成你的条件 --------------------编程问答-------------------- 先取那两个你知道的,然后排出他们,随机取八个 --------------------编程问答--------------------
我都知道是这么说。语句这么写撒。 --------------------编程问答--------------------
老大 我没有看明白呢。麻烦细说下哦 --------------------编程问答-------------------- --------------------编程问答-------------------- 随机取出2条你定义的必须取出的
再随机取出剩下的8条,
一共是10条随机记录
这些是基本的SQL语法,你可以查看SQL教程 --------------------编程问答--------------------
用您的这个 “如果语句中包含 UNION 运算符,那么 ORDER BY 子句中的项就必须出现在选择列表中。‘ --------------------编程问答--------------------
select * from (SELECT top 2 * FROM [tb_test] Where id < 30 Order By NewId()) AS A
UNION
select * from (SELECT top 8 * FROM [tb_test] Where id > 30 Order By NewId()) AS B
运行结果 “如果语句中包含 UNION 运算符,那么 ORDER BY 子句中的项就必须出现在选择列表中。‘ --------------------编程问答-------------------- 你使用的是SQL Server 2000吧,上面的代码在SQL 2008下是可以的,
SQL 2000 这样写
select * from (SELECT top 2 *,NewId() As RandromX FROM [Article] Where ArticleId < 100 Order By RandromX) A--------------------编程问答--------------------
UNION ALL
select * from (SELECT top 8 *,NewId() As RandromX FROM [Article] Where ArticleId > 200 Order By RandromX) B
毫无保留的 五体投地 的 膜拜您一下。居然连我使用的2000 都被您铝合金法眼看出来了。我马上测试下。。谢谢老大。。。 --------------------编程问答-------------------- 你查的两条 UNION ALL 随机的。。 --------------------编程问答--------------------
select * from (select top 8 * from Travel_Product order by newid() ) as a
union all
select * from (select top 2 * from Travel_Product) as b
补充:.NET技术 , ASP.NET