根据特定条件在MySQL数据库中选择随机条目

时间:2013-04-19 04:08:17

标签: php mysql

好吧,假设我的MySQL表设置了类似于:

的条目
id  code            sold
1   JKDA983J1KZMN49  0
2   JZMA093KANZB481  1
3   KZLMMA98309Z874  0

我希望它能够在数据库中已经存在的范围内选择一个随机ID(或者只是从1-X开始),然后将它分配给一个变量,以便我自己采取行动。因此,假设我们要选择未售出的 代码(标记为0而不是1),然后我们选择它。

现在,它不一定是100%随机,它可以检查第一个是否被出售,如果没有,继续。但我不是百分之百确定如何通过这个。片段会受到赞赏,因为我可以自己轻松地解决问题,我只需要一个例子来看看我要去哪里。

5 个答案:

答案 0 :(得分:2)

如何使用WHERE和ORDER BY RAND()

SELECT id, code
FROM tablename
WHERE sold = 0
ORDER BY RAND()
LIMIT 1

答案 1 :(得分:1)

如果您不需要随机,请不要使用它。它会对性能产生非常不利的影响。既然你在帖子中提到没有必要,我会建议使用Ezequiel上面的答案然后放弃兰特。有关详细信息,请参阅Most Efficient Way To Retrieve MYSQL data in random order PHP

答案 2 :(得分:1)

您的代码似乎已经是随机的,所以为什么不采取第一项;如果您的数据库中有许多未售出的记录,那么执行典型的ORDER BY RAND()会损害数据库性能。

SELECT *
FROM codes
WHERE sold = 0
LIMIT 1
FOR UPDATE;

我还添加了FOR UPDATE以避免竞争条件,假设您正在使用交易,因为您稍后更新记录(实际销售它)。

答案 3 :(得分:0)

你试过吗

SELECT * FROM myTable WHERE sold = 0 ORDER BY RAND() LIMIT 1

答案 4 :(得分:0)

ORDER BY RAND()添加到SELECT查询的其余部分是最直接的方法。