mysql - MYSQL - 如何在无组织的表中获取丢失的记录
问题描述
我在 MYSQL 中有下表,它的组织方式不是最好的,但我必须这样处理。
细节
id INTEGER PRIMARY KEY
plant_id INTEGER FOREIGN KEY
state VARCHAR
county VARCHAR
municipality VARCHAR
count INTEGER
每条记录都包含在一个州、一个县或一个市镇中存在多少特定植物标本的计数。
一个州的工厂的样本计数记录的县和市字段等于 NULL。县中的植物计数记录具有包含其所属州名称的州字段(没有外键)和等于 NULL 的自治市字段。市内植物的标本计数记录有包含各自名称的州和县字段(没有外键)。
我应该检查我有哪些县的总计数,但我没有任何市政计数记录。我曾想过以以下方式创建 LEFT OUTER JOIN,左表与县计数,右表与市计数,但不幸的是它不起作用。
SELECT d1.*, d2.*
FROM details AS d1
LEFT OUTER JOIN details AS d2
ON (d1.id != d2.id
AND d1.plant_id = d2.plant_id
AND d1.county = d2.county
AND d1.county IS NOT NULL
AND d1.municipality IS NULL
AND d2.municipality IS NOT NULL
)
WHERE d2.id IS NULL
谢谢
解决方案
试试这个,因为我通常在 MSSQL 上工作,可能会有一些语法错误,但我认为这应该对你有所帮助。
SELECT d1.*
FROM details AS d1
WHERE d1.county IS NOT NULL AND d1.municipality is NULL
AND NOT EXISTS(
SELECT *
FROM details d2
WHERE d2.plant_id = d1.plant_id AND d2.county = d1.county AND d2.municipality IS NOT NULL
)
推荐阅读
- flutter - Flutter 应用程序在模拟器上运行,但不在我的物理设备上
- typescript - 如何在打字稿中输入?
- firebase - Firebase / Firestore 如何存储用户数据
- c# - 有没有办法实现适配器或接口而不更改在这种情况下使用它的类?
- python - python regex sub中的增量变量
- google-kubernetes-engine - Google Kubernetes Engine - 如何更新容器优化操作系统 (COS)
- bash - Ifplugd:错误“不正确的操作参数”
- c++ - 为什么 Wemos D1 工作一段时间后没有反应
- google-app-engine - Google Cloud Platform:Cloud Functions 与 App Engine
- php - 使用数组来确定输出而不是 if