首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查MYSQL中是否存在记录

问检查MYSQL中是否存在记录
EN

Stack Overflow用户
提问于 2013-12-13 16:00:30
回答 4查看 87关注 0票数 1

我的问题是关于表中是否有记录。如果我正在寻找des或不存在记录,我如何才能得到一个真正通知的结果列表?我的意思是,我知道我可以通过这样的查询来检查

代码语言:javascript
复制
SELECT field FROM table WHERE unique_field IN (value1, value2)

这将向我展示那些确实存在的记录。但如果我想要的结果是:

代码语言:javascript
复制
+--------------+-------+
| unique_field | exists|
+--------------+-------+
| value1       | 1     |
| value2       | 0     |
+--------------+-------+

是否可以这样做呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-13 16:10:50

使用EXISTS(),当有命中时,它将停止搜索更多的行,所以在搜索大表时不会有太多开销。

代码语言:javascript
复制
SELECT 'value1' AS unique_field, EXISTS(SELECT 1 FROM your_table WHERE unique_field = 'value1') AS 'exists'
UNION ALL 
SELECT 'value2' AS unique_field, EXISTS(SELECT 1 FROM your_table WHERE unique_field = 'value2') AS 'exists'
票数 0
EN

Stack Overflow用户

发布于 2013-12-13 16:14:46

您还可以使用值的“引用”表来完成此操作:

代码语言:javascript
复制
select ref.val,
       (exists (select 1 from table t where t.unique_field = ref.val)) as `exists`
from (select 'value1' as val union all
      select 'value2' as val
     ) ref;

您也可以将其表述为left outer join

代码语言:javascript
复制
select ref.val,
       (t.unique_field is not null) as `exists`
from (select 'value1' as val union all
      select 'value2' as val
     ) ref left outer join
     table t
     on t.unique_field = ref.val;

这是因为table中的字段是唯一的(否则,您可能会得到重复的行或需要聚合)。

票数 1
EN

Stack Overflow用户

发布于 2013-12-13 16:05:11

检查count(*)以获取记录的no,如果它是returns 0,则不存在记录。

在桌子上。

代码语言:javascript
复制
SELECT count(*) FROM table WHERE unique_field IN (value1, value2);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20570711

复制
相关文章

相似问题

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