我在检查由25个表的脚本生成的搜索索引表(asIndex)时出错。
asIndex和Evaluations表每个地址都有多行。
因此,此查询试图确保索引行的Evaluation为“blue”的任何地方都至少有一行的Evaluation设置为“blue”。
它能工作,但能产生4万行。
SELECT
ev.`Street Name`,
ev.`Street Number`,
ev.Evaluation
FROM
`tblEvaluations` ev,
`asIndex` asi
WHERE asi.`Evaluation` = 'blue'
AND asi.`StreetName` = ev.`Street Name`
AND asi.`StreetNumber` = ev.`Street Number`;
我需要做的是做一个查询,它将列出任何在asIndex中有蓝色计算但在计算表中没有蓝色计算值匹配地址的地址。
我如何选择负匹配?
最佳答案
你可以用左连接。
SELECT
asi.`Street Name`,
asi.`Street Number`,
asi.Evaluation
FROM
`asIndex` asi ledt join
`tblEvaluations` ev on asi.`StreetName` = ev.`Street Name`
AND asi.`StreetNumber` = ev.`Street Number`
WHERE asi.`Evaluation` = 'blue'
AND ev.`Street Name` is Null;