Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Order by不适用于union、microsoft access数据库、asp.net_Asp.net_Ms Access_Union - Fatal编程技术网

Order by不适用于union、microsoft access数据库、asp.net

Order by不适用于union、microsoft access数据库、asp.net,asp.net,ms-access,union,Asp.net,Ms Access,Union,我想从数据库中获取数据的百分比为基础的费率字段,也我想显示数据随机 所以我试过这个 string sql = "(SELECT TOP 100 PERCENT * FROM tbl_adv WHERE Stars = 7 ORDER BY Rnd(-(1000*adID)*Time())) UNION (SELECT TOP 84 PERCENT * FROM tbl_adv WHERE Stars = 6 ORDER BY Rnd(-(1000*adID)*Time())) UNION (SE

我想从数据库中获取数据的百分比为基础的费率字段,也我想显示数据随机 所以我试过这个

string sql = "(SELECT TOP 100 PERCENT * FROM tbl_adv WHERE Stars = 7 ORDER BY Rnd(-(1000*adID)*Time())) UNION (SELECT TOP 84 PERCENT * FROM tbl_adv WHERE Stars = 6 ORDER BY Rnd(-(1000*adID)*Time())) UNION (SELECT TOP 72 PERCENT * FROM tbl_adv WHERE Stars = 5 ORDER BY Rnd(-(1000*adID)*Time()))";
它显示正确的数据,但不是随机的, 有什么建议吗

我还提供了一个用于测试的示例,您可以从下面的链接下载

联合中查询ORDER BY应应用于联合返回的整个集合
因此,从三个子选择中构建一组记录,然后将顺序应用于结果集

string sql =  @"SELECT * FROM 
                (
                   SELECT TOP 100 PERCENT * FROM tbl_adv WHERE Stars = 7 
                     UNION 
                   SELECT TOP 84 PERCENT * FROM tbl_adv WHERE Stars = 6
                     UNION 
                   SELECT TOP 72 PERCENT * FROM tbl_adv WHERE Stars = 5
                )
                ORDER BY Rnd(-(1000*adID)*Time())";

删除union和第二个select查询是否有效?是的,这一个单独有效:从tbl_adv中选择TOP 100%,其中Stars=7 ORDER BY Rnd(-(1000*adID)*Time())我测试了它,但它给出了以下错误:ORDER BY表达式(Rnd(-(1000*adID)*Time())包含查询未选择的字段。我还编辑了一个示例项目的下载链接。