两个表:
== 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/