如果有包含"X“字段的记录,则返回它们,否则返回随机记录。
你到底是怎么做到的?
发布于 2009-10-21 22:36:23
这最好用2个查询来完成。第一个函数返回记录,其中field='x'。如果为空,则使用field!='x'查询随机记录。获取随机记录的效率可能非常低,正如您将从“获取随机记录”问题的数量中看到的那样。正因为如此,你真的只想在万不得已的情况下这么做。
发布于 2009-10-21 22:46:00
在mysql的大表中,仅仅选择一个随机记录是非常困难的,而且效率非常低,在这个website中,你可以找到一个脚本来做这件事,添加'x‘的条件并获得你需要的功能应该是很简单的。
发布于 2009-10-22 00:13:40
好吧,下面是我基于mysql.users表的例子:
首先,不存在的记录:
mysql> SELECT * FROM (select user, 1 as q from user where user like '%z' union all (select user, 0 from user limit 1)) b WHERE q=(SELECT CASE WHEN EXISTS(select user, 1 as q from user where user like '%z' ) THEN 1 ELSE 0 END);
+--------+---+
| user | q |
+--------+---+
| drupal | 0 |
+--------+---+
1 row in set (0.00 sec)然后,现有的:
mysql> SELECT * FROM (select user, 1 as q from user where user like '%t' union all (select user, 0 from user limit 1)) b WHERE q=(SELECT CASE WHEN EXISTS(select user, 1 as q from user where user like '%t' ) THEN 1 ELSE 0 END);
+------------------+---+
| user | q |
+------------------+---+
| root | 1 |
| root | 1 |
| debian-sys-maint | 1 |
| root | 1 |
+------------------+---+
4 rows in set (0.00 sec)也许它会有用,或者也许有人可以用更好的方式重写它。
https://stackoverflow.com/questions/1601182
复制相似问题