mysql - MySQL 选择不在的地方。如何指定多个字段
问题描述
我现在正在使用以下查询
SELECT SKU, Country FROM Products WHERE SKU NOT IN (SELECT SKU FROM ProductData)
只要在 ProductData 表中找不到 SKU,这就会从我的 Products 表中返回 SKU 和 Country。
我接下来要努力实现的是相同的结果,但是在 ProductData 的一行中找不到 SKU 和 Country。
在以下示例中,法国和德国的 ProductData 表中缺少 MySKU1,但我当前的查询不会返回它们,因为 MySKU1 存在。所以我需要以某种方式添加第二个字段。
Products TABLE
--------------
MySKU1 UK
MySKU1 France
MySKU1 Germany
MySKU2 UK
MySKU2 France
MySKU2 Germany
ProductData TABLE
--------------
MySKU1 UK
MySKU2 UK
MySKU2 France
MySKU2 Germany
我相信我也可以通过加入来做到这一点,但我并不完全理解语法,所以任何帮助都将不胜感激。
解决方案
您可以使用 LEFT 连接来做到这一点:
SELECT p.SKU, p.Country
FROM Products p LEFT JOIN ProductData d
on d.SKU = p.SKU and d.Country = p.Country
WHERE d.SKU is null or d.Country is null
结果:
| SKU | Country |
| ------ | ------- |
| MySKU1 | France |
| MySKU1 | Germany |
推荐阅读
- vue.js - ESLint 插件需要 Vue 和 Vuetify 但我只想将它们作为对等依赖项
- java - 将数据存储在会话中而不是将数据存储在数据库中的主要优点是什么?
- lsf - 在执行主机上获取 $LSB_JOBID
- kubernetes - 在安装时操作 Helm 图表值(不是 `values.yaml`)
- c# - ef core 5 InMemory 测试
- power-virtual-agents - 如何在 Power Virtual 代理中添加自定义错误消息
- android - 加密 logback android 文件
- azure - Azure VPN 网关:维护客户端配置在多个 VPN 网关创建/删除中有效
- sql - 如何获得最大日期期间
- sql - 收集 SQL Server 中第一个分隔符之前的所有字符串