mysql - sql 查询,在 where 类中进行行比较

标签 mysql sql oracle postgresql firebird

我有两个表:CustomersProducts。一位客户可以拥有多个产品。

我正在尝试检索没有特定产品的客户。

例如,10 位客户购买了产品 AB,另外 10 位客户购买了 AB,和 C。如何找回那些没有 C 产品的客户?

最佳答案

对于您当前的数据库结构,这就是您正在寻找的:

select c.id, c.name, c.phone, c.address 
from Customers c
where not exists (select * from products p 
                  where p.customer_id = c.id and p.id = 'c') 

但是,您应该考虑创建第三个表来存储单独的购买。

关于mysql - sql 查询,在 where 类中进行行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7875747/

相关文章:

sql - 如何将列转换为行或反之亦然

mysql - 为什么在对 SQL 查询 + 优化查询使用 LIMIT 时扫描类型从 ALL 更改为 RANGE

mysql - 过滤表中的记录,这些记录在四个国家代码列中至少有三个具有不同的国家代码

c# - 在 C# 中使用图像路径从 Oracle 数据库中检索图像

php - 第 1 页之后分页不起作用?

mysql - 合并两个 mysql 表的某些列,其中 id = fileid

mysql - 转换 MySQL 日期(我认为是秒)

mysql - 来自 mysql 的 1 天前记录

php - 如何在首次登录后销毁用户帐户 - php

java - 使用多个输出参数调用 Oracle StoredProcedure