Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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
C# MySql中的Random()?_C#_Mysql_Random - Fatal编程技术网

C# MySql中的Random()?

C# MySql中的Random()?,c#,mysql,random,C#,Mysql,Random,是否可以从表X中检索标志=0的随机行? 使用MySql和C# 这将检索1个随机行。将1替换为N以获得N个随机行 警告:正如其他人指出的,这可能很慢,因为它需要一个完整的表扫描。我曾经在DB2中这样做过,在DB2中,这对具有数十万行的表非常有效,但根据中的链接,MySQL的降级速度似乎更快。您永远不应该使用ORDER BY RAND()。随着桌子的增大,它变得非常缓慢。相反,你应该这样做 如果你对学习有不合理的恐惧,这里有一个解决方案可以满足你的要求: SELECT X.x_id,

是否可以从表X中检索标志=0的随机行? 使用MySql和C#

这将检索1个随机行。将1替换为N以获得N个随机行


警告:正如其他人指出的,这可能很慢,因为它需要一个完整的表扫描。我曾经在DB2中这样做过,在DB2中,这对具有数十万行的表非常有效,但根据中的链接,MySQL的降级速度似乎更快。

您永远不应该使用
ORDER BY RAND()
。随着桌子的增大,它变得非常缓慢。相反,你应该这样做

如果你对学习有不合理的恐惧,这里有一个解决方案可以满足你的要求:

SELECT 
    X.x_id,
    X.foobar
FROM X
  JOIN ( 
    SELECT CEIL(RAND()*(SELECT MAX(x_id) FROM X)) AS x_id
  ) AS Choices
  USING ( x_id )

WHERE X.x_id >= Choices.x_id
  AND X.flags = 0

ORDER BY X.x_id LIMIT 1;

您想返回随机数目的行还是随机选择的固定数的行?如果我没有错,这一行应该总是按第一行还是第二行排序?Rand()将始终返回一个介于0或1之间的数字。。那么按0列还是按1列排序?不确定SELECT Rand()得到的结果是0.NUM,但根据MySQL手册,使用
ORDER BY Rand()
确实得到了完全随机的结果(我刚刚测试了4行):返回一个范围为0的随机浮点值v。Granti:ORDER BY Rand()仍然让我神魂颠倒,我不敢相信它有多简单。为什么?它精确地定义了您想要的:一个随机排序的表。然后从该表中获取所需的N行(这是随机的,那些是最上面的行并不重要)。“Never,ever”有点极端,但无论如何都是好文章。
SELECT 
    X.x_id,
    X.foobar
FROM X
  JOIN ( 
    SELECT CEIL(RAND()*(SELECT MAX(x_id) FROM X)) AS x_id
  ) AS Choices
  USING ( x_id )

WHERE X.x_id >= Choices.x_id
  AND X.flags = 0

ORDER BY X.x_id LIMIT 1;