выберите данные, если они есть в обеих таблицах или в одной из таблиц

-1
задан Mark Gerryl Mirandilla 18 January 2019 в 12:09
поделиться

2 ответа

В вашем случае было бы лучше использовать union

SELECT * FROM history_search 
right JOIN history_subs ON history_search.keyword = history_subs.keyword 
WHERE history_search.keyword LIKE '%$keyword%' OR history_subs.keyword LIKE 
'%$keyword%'
union 
SELECT * FROM history_search 
left JOIN history_subs ON history_search.keyword = history_subs.keyword 
WHERE history_search.keyword LIKE '%$keyword%' OR history_subs.keyword LIKE '%$keyword%'
0
ответ дан Ali Hallaji 18 January 2019 в 12:09
поделиться

Вам нужно использовать полное внешнее объединение, если ваши критерии должны показать результат, если он существует в любой из таблиц.

Более того, если вы используете условие where при полном внешнем соединении, ваш запрос будет неявно преобразован во внутреннее объединение

, поэтому окончательный запрос,

РЕДАКТИРОВАТЬ: очевидно, полное внешнее соединение не поддерживается в MySql. Вот альтернативный подход к полному внешнему соединению

SELECT 
  * 
FROM history_search 
LEFT JOIN history_subs 
  ON history_search.keyword = history_subs.keyword AND history_search.keyword LIKE '%$keyword%'
UNION
SELECT 
  *
FROM history_subs
LEFT JOIN history_search
  ON history_search.keyword = history_subs.keyword AND history_subs.keyword LIKE '%$keyword%`'
0
ответ дан Derviş Kayımbaşıoğlu 18 January 2019 в 12:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: