首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL条件SELECT语句

问MySQL条件SELECT语句
EN

Stack Overflow用户
提问于 2009-10-21 22:26:38
回答 3查看 1K关注 0票数 1

如果有包含"X“字段的记录,则返回它们,否则返回随机记录。

你到底是怎么做到的?

EN

回答 3

Stack Overflow用户

发布于 2009-10-21 22:36:23

这最好用2个查询来完成。第一个函数返回记录,其中field='x'。如果为空,则使用field!='x'查询随机记录。获取随机记录的效率可能非常低,正如您将从“获取随机记录”问题的数量中看到的那样。正因为如此,你真的只想在万不得已的情况下这么做。

票数 1
EN

Stack Overflow用户

发布于 2009-10-21 22:46:00

在mysql的大表中,仅仅选择一个随机记录是非常困难的,而且效率非常低,在这个website中,你可以找到一个脚本来做这件事,添加'x‘的条件并获得你需要的功能应该是很简单的。

票数 0
EN

Stack Overflow用户

发布于 2009-10-22 00:13:40

好吧,下面是我基于mysql.users表的例子:

首先,不存在的记录:

代码语言:javascript
复制
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)

然后,现有的:

代码语言:javascript
复制
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)

也许它会有用,或者也许有人可以用更好的方式重写它。

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

https://stackoverflow.com/questions/1601182

复制
相关文章

相似问题

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