sql - 检查至少存在一条记录

标签 sql database postgresql

两个表:

== customers ==
cust_id

== attachments ==
att_id
cust_id

1 个客户 -> 许多附件

我会检索所有客户,并添加 bool 虚拟字段“has_attach”进行选择,了解客户是否有附件。

没有 GROUP BY,如果可能的话:-)

最佳答案

根据 many 的真正含义,COUNT(*) 选项可能会造成不必要的负担。

在这种情况下,以下有时会产生好处。

SELECT
  *,
  CASE WHEN EXISTS (SELECT *
                      FROM attachments
                     WHERE cust_id = customers.cust_id)
       THEN 1
       ELSE 0 END  AS has_attach
FROM
  customers

这是因为 EXISTS 实际上并没有读取所有记录。它只是检查任何记录是否存在。

事实上,当使用索引时,它甚至不会从表中读取任何记录。它只是检查索引是否指向任何匹配的记录并在此处停止。

关于sql - 检查至少存在一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13289571/

相关文章:

sql - Breeze JS 中的联结表多对多。如何获取data.results

sql - 查询邻接表中最远的 child

c# - 将 String、Float 和 DateTime 值插入 sql 表

sql - 在 Golang 中编写一个返回接口(interface) slice 的函数

ruby-on-rails - RoR 用户通过 JSON 添加

MySQL 未知列问题

mysql - SQL。如何在同一张表的不同行中工作/比较/查找差异

sql - 为什么我不能重新排序我的 SQL Server 列?

php - 如何倒回 pg_fetch_assoc($result, null) 迭代器

postgresql - 升级数据库后应用程序无法在 Heroku 上运行