mysql JOIN ON column = 'буквальная строка или значение' не возвращает ожидаемый результат - PullRequest
0 голосов
/ 12 февраля 2020

Это запрос, в котором мне нужно, чтобы результаты возвращали только строки с userID = 12345678 результат содержит также поля с другими userID

select `a`.*, `b`.`someField` from `a` left join `b` on `a`.`userID` = '12345678'

Как я могу решить это?

1 Ответ

0 голосов
/ 12 февраля 2020

Вы неправильно используете условие JOIN:

SELECT `a`.*, `b`.`someField` 
from `a` left join `b` on a.matchingField = b.matchingField
WHERE `a`.`userID` = '12345678'

Это способ сделать правильное соединение. У вас есть поле matchField, которое является связующим звеном между записями в одной таблице и в другой, а userID является условием фильтрации. Обратите внимание, что macthingField также может иметь тот же идентификатор пользователя. В этом случае:

SELECT `a`.*, `b`.`someField` 
from `a` left join `b` on a.userID = b.userID
WHERE `a`.`userID` = '12345678'
...