比较行的 SQL 语句

标签 sql join compare

我有一张表,其中存储了产品编号、客户名称和地区。所以我可以使用这个单一的表查询特定区域中特定客户的所有产品。

我正在尝试编写一个查询,使我能够查看客户在一个地区拥有哪些产品,而在另一个地区则没有,反之亦然(比较地区)。换句话说,对于一个特定的客户,我能否看到北方的所有产品而不是南方的产品,以及南方的所有产品而不是北方的产品。

我敢肯定,如果它是 2 个单独的查询,这将非常容易,但我正在尝试在单个查询中完成。可能吗?

Product          Client          Region
500              1               North
500              1               South
501              1               North
502              1               South
503              1               North
503              1               South

上述数据的结果表明,客户 1 在北方有产品 501,但在南方没有,产品 502 在南方但没有北方。产品 500 和 503 被忽略,因为它们在两个区域中。

Product          Client          Region
501              1               North
502              1               South

最佳答案

这是一种方法:

Select product, client, region
From yourTable t
Where region in('north','south')
  And not exists(
    Select product, client, region
    From yourTable tt
    Where t.region <> tt.region
      And t.client = tt.client
      And t.product = tt.product
    )

关于比较行的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16021094/

相关文章:

jquery 发现 div 属性更小或更高

php - 使用其他两个填充字段的 DateDiff 结果更新字段

Access 中的 SQL 查询提示消息框要求更改表名

sql - 将存储过程的多个结果集存储到不同的表中

sql - 地址簿数据库设计 : denormalize?

mysql - 将 SUBQUERY UNION SELECT 重写为 JOINS

mysql - 不带 on 子句的 DetachedCriteria

python - 比较 Python 中的 3 个列表

ruby-on-rails - Rails 为具有多对多关系的模型创建表单

mysql - 如何在 MySQL 中按两列比较两个查询?