当前位置:编程学习 > C#/ASP.NET >>

【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 楼 thedolphin 的回复:
先取那两个你知道的,然后排出他们,随机取八个

我都知道是这么说。语句这么写撒。 --------------------编程问答--------------------
引用 1 楼 net_lover 的回复:
可以这样


SQL code
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 ……

老大 我没有看明白呢。麻烦细说下哦 --------------------编程问答-------------------- --------------------编程问答-------------------- 随机取出2条你定义的必须取出的
再随机取出剩下的8条,
一共是10条随机记录

这些是基本的SQL语法,你可以查看SQL教程 --------------------编程问答--------------------
引用 1 楼 net_lover 的回复:
可以这样


SQL code
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 ……

用您的这个  “如果语句中包含 UNION 运算符,那么 ORDER BY 子句中的项就必须出现在选择列表中。‘ --------------------编程问答--------------------
引用 6 楼 net_lover 的回复:
随机取出2条你定义的必须取出的
再随机取出剩下的8条,
一共是10条随机记录

这些是基本的SQL语法,你可以查看SQL教程


 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 
--------------------编程问答--------------------
引用 9 楼 net_lover 的回复:
你使用的是SQL Server 2000吧,上面的代码在SQL 2008下是可以的,
SQL 2000 这样写


SQL code
select * from (SELECT top 2 *,NewId() As RandromX  FROM [Article] Where ArticleId < 100 Order By RandromX)  A 
UNION ALL 
sele……

毫无保留的 五体投地 的 膜拜您一下。居然连我使用的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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,