我有两个表与一个名为'status'的字段相关。在table2.location的值为'texas'的情况下,有20个table2.status实例的值为'good'。SQL LEFT JOIN和WHERE产生意想不到的结果
也就是说,以下查询返回20行table2.status ='good'。
[A] SELECT table2.status FROM table2 WHERE table2.location = 'texas';
此外,还有50个独特的table1.id与table1.status = '好'。
也就是说,以下查询返回50行唯一table1.id's。
[B] SELECT table1.id FROM table1 WHERE table1.status = 'good';
现在,当我运行以下查询:
[C] SELECT table1.id FROM table1 LEFT JOIN table2 ON table1.status = table2.status WHERE table2.location = "texas";
我希望它返回50行的唯一的ID。但是,它实际上返回了50行唯一标识的20次(即我返回了1000行)。
我做的快速修复只是简单地执行SELECT DISTINCT table1.id ...然后只返回一组50行(不是20组50行)。
但是,我想知道为什么我看到这个行为 - 也许我的查询[C]有问题吗?
谢谢!