У меня есть две таблицы, связанные полем, называемым «статус». С table2.location, имеющим значение 'texas', есть 20 экземпляров table2.status, имеющих значение 'good'.
То есть следующий запрос возвращает 20 строк table2.status = 'good'.
[A] SELECT table2.status FROM table2 WHERE table2.location = 'texas';
Далее, есть 50 уникальных таблиц table1.id с table1.status = 'good'.
То есть следующий запрос возвращает 50 строк уникального table1.id.
[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 строк уникальных идентификаторов. Тем не менее, он на самом деле возвращает 50 строк уникального идентификатора 20 раз (т. Е. Я возвращаю 1000 строк).
Я быстро исправил это, выполнив SELECT DISTINCT table1.id ..., который затем просто возвращает один набор из 50 строк (а не 20 наборов из 50 строк).
Однако я хотел бы знать, почему я вижу такое поведение - возможно, что-то не так с моим запросом [C]?
Спасибо!