我在检查由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;

10-08 04:00