1
我有两个表像这样的一个MySQL数据库:MySQL查询与“不是”不是唯一的列
Table readings:
reading_id, building_id, sub_id, reading_date
Table billings:
billing_id, building_id, sub_id, date_start, date_end
这就是它是如何工作的: 的foreach夫妇building_id,sub_id上读数表我有几个阅读日期。
这些阅读日期中的一些可以用作帐单表中的date_start或date_end。我想实现的是一个单一的查询,它返回reading_date从未被使用过的building_id sub_id,或者作为date_start和date_end来为building_id/sub_id这对夫妇返回。
由于建筑表格很大(> 5k行),我必须同时检查所有建筑物,所以我希望以最快的方式做到这一点,而不是进行5k查询。
我试过这个查询,但它不工作:
SELECT DISTINCT a.reading_id, a.sub_id
FROM readings AS a
LEFT JOIN billings AS b ON b.building_id=a.building_id
AND b.sub_id=a.sub_id
WHERE reading_date NOT IN (SELECT DISTINCT date_start
FROM billings
WHERE b.building_id=a.building_id
AND b.sub_id=a.sub_id
)
AND reading_date NOT IN (SELECT DISTINCT date_end
FROM billings
WHERE b.building_id=a.building_id
AND b.sub_id=a.sub_id
)
太棒了!它像一个魅力,感谢! –