Хотя я присоединяюсь к другим и подтверждаю, что OR
можно легко использовать в условиях соединения, как и в любых других условиях (и поэтому ваш запрос в порядке), вы все равно можете обойтись без OR
в этом конкретном случае.
Условия, такие как column = value1 OR column = value2
, где один и тот же столбец проверяется с использованием ряда различных фиксированных значений, могут быть преобразованы в column IN (value1, value2)
. Последний должен работать не хуже первого и, возможно, выглядит яснее в конце.
Итак:
SELECT *
FROM
TABLE A
INNER JOIN
TABLE B
ON
A.USERNAME IN (B.NAME, B.USERNAME)