首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用drupal数据库包装功能检索随机行

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

Stack Overflow用户
提问于 2011-01-23 10:34:02
回答 2查看 663关注 0票数 0

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

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

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

任何点子都是很棒的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-23 19:49:54

在Drupal7中,SelectQuery类为此提供了一个特定的方法orderRandom(),您可以使用它来实现可移植性。

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

票数 3
EN

Stack Overflow用户

发布于 2011-01-23 14:39:41

你需要多大的便携能力?

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

代码语言:javascript
复制
SELECT column FROM table
ORDER BY RANDOM();

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4771980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档