Database 使用drupal数据库包装功能检索随机行

Database 使用drupal数据库包装功能检索随机行,database,drupal,Database,Drupal,我正在为drupal6编写一个相当简单的“角色扮演名称生成器”块,表中的名称有无数的开始/中间/结束选项 我正在寻找一种简单的方法,在使用drupal数据库包装器函数的同时检索每个函数的随机行 找到特定于mysql的解决方案并不困难,但我希望保持可移植性,因为我不能保证我的用户将运行mysql 任何指针都会很漂亮 您需要多大的便携性 从概念上讲,解决方案非常简单 SELECT column FROM table ORDER BY RANDOM(); 此时,您可以将第一行作为随机行。一个问题是不

我正在为drupal6编写一个相当简单的“角色扮演名称生成器”块,表中的名称有无数的开始/中间/结束选项

我正在寻找一种简单的方法,在使用drupal数据库包装器函数的同时检索每个函数的随机行

找到特定于mysql的解决方案并不困难,但我希望保持可移植性,因为我不能保证我的用户将运行mysql


任何指针都会很漂亮

您需要多大的便携性

从概念上讲,解决方案非常简单

SELECT column FROM table
ORDER BY RANDOM();

此时,您可以将第一行作为随机行。一个问题是不同的平台使用不同的功能。PostgreSQL(上图)使用RANDOM(),MySQL使用RAND()。IIRC,SQL Server有一个RAND()函数,但在单个查询中重复使用,它返回相同的值。所以SQL Server需要“ORDER BY NEWID();”(我可能对SQL Server的看法是错误的。)

您需要多大的可移植性

从概念上讲,解决方案非常简单

SELECT column FROM table
ORDER BY RANDOM();
此时,您可以将第一行作为随机行。一个问题是不同的平台使用不同的功能。PostgreSQL(上图)使用RANDOM(),MySQL使用RAND()。IIRC,SQL Server有一个RAND()函数,但在单个查询中重复使用,它返回相同的值。因此,SQL Server需要“ORDER BY NEWID();”(我可能对SQL Server的看法是错误的。)

在Drupal 7中,该类有一个特定的方法,orderRandom(),您可以使用它进行移植

我想对于Drupal6,最简单的解决方案是编写一个“if($GLOBALS['db_type']=='pgsql')”条件语句,并使用RAND()(mysql)或RANDOM()(pgsql)。几乎没有人在使用其他任何东西,而且那些使用的人可能正在运行一个被黑客攻击的Drupal版本。

在Drupal 7中,该类有一个特定的方法,orderRandom(),您可以使用它进行移植

我想对于Drupal6,最简单的解决方案是编写一个“if($GLOBALS['db_type']=='pgsql')”条件语句,并使用RAND()(mysql)或RANDOM()(pgsql)。几乎没有人在使用其他任何东西,而且那些使用的人可能正在运行一个被黑客攻击的Drupal版本