Выбрать строки из таблицы, по условию из другой таблицы
Есть две таблицы: 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,'%')