Выбрать строки из таблицы, по условию из другой таблицы

Есть две таблицы: history_oper

date_oper | user_phone |      sms
 01.06.20 | 7999999999 | txtxtx 1234 txtxt

и err_opers

  dat    |     tel    |  sum
01.06.20 | 7999999999 | 1234 

Нужно из history_oper выбрать строки ошибочных опереаций, таблица err_opers. Сложность в том, что в первой таблице в поле sms содержится текст, в котором есть сумма (1234) а во второй таблице указана только эта сумма без текста. Сделал так

SELECT * FROM `history_oper` WHERE 
`date_oper` IN (SELECT dat FROM err_opers)
AND `user_phone` IN (SELECT tel FROM err_opers)    
AND `sms` LIKE IN(SELECT sum FROM err_opers)

Как правильно записать третье условие?


Ответы (1 шт):

Автор решения: Aziz Umarov

Запрос ваш неверен, он выдаст лишние записи. Пробуйте, так

SELECT `history_oper`.* FROM `history_oper` 
INNER JOIN err_opers
  ON `history_oper`.`date_oper` = err_opers.dat
  AND `user_phone` = err_opers.tel
WHERE
   `sms` LIKE CONCAT('%',err_opers.sum,'%')
→ Ссылка