Mysql嵌套子查询

时间:2012-05-06 04:17:30

标签: c# mysql subquery

我有一个页面,我正在努力调整一下......

基本上我当前的SQL select是从页面上选择的选项中随机生成的。

但是,我希望默认排序顺序是随机的;但是根据我的阅读,我应该避免MySql中的嵌套子查询,并按 rand 排序。

但是,如果我通过 rand 订购了使用嵌套子查询返回的有限数量的记录(小于50?),该怎么办呢。

这是个坏主意吗?这会是一个更大的表2kk +行的问题吗?

以下是我正在考虑的事情

select * from (
  select a.*,b.* 
  from a 
  left join b on b.id=a.id 
  where a.isactive AND etc etc 
  order by a.id DESC // select say page 2 of 50 newest records
  limit 50,50
) tblrand order by rand() // randomize the order of those 50 records

**编辑* * *

通过a.displayorder将内部顺序更改为a.id DESC的顺序以更好地反映情况,因为默认排序顺序(如果没有指定)是最新记录(即... id排序的desc顺序)

并添加了一些评论

** * 已解决 * **** (但是我还是想知道这会如何发展......也就是说,对于mysql ... tnx提前表现有多糟糕)

tnx dbsman ..我正以不同的方式思考问题。 起初我想要完全随机的行,正如我所解释的那样是屁股的痛苦......(我在自己想做的事情中混淆了一样)。

但我认为我找到了一个解决方案,就像我在应用程序方面的问题一样魅力

//code that gets **Dataset ds** goes here
var rand = new Random();
var result = ds.Tables[0].AsEnumerable().OrderBy(r => rand.Next());
lst.DataSource = result.CopyToDataTable(); 

0 个答案:

没有答案