У меня есть необходимость конкатенировать строку с значением поля в запросе MySQL, чтобы LEFT JOIN две таблицы.
В таблице 1 есть столбец под названием «category_id» с числовыми значениями, такими как 61, 78, 94 и т. Д.
В таблице 2 есть столбец «запрос», который ссылается на механизм маршрута запроса, и он имеет такие значения, как «product_id = 68», «category_id = 74», «manufacturer_id = 99» и т. Д.
Поэтому в моем запросе мне необходимо присоединиться к таблицам, когда когда-либо конкатенированная строка, полученная из заданной строки, и значение столбца «category_id» соответствует полю запроса.
В настоящее время моя инструкция SQL:
SELECT * FROM tableOne LEFT JOIN tableTwo ON tableTwo.query = 'category_id=' + tableOne.category_id 
Я пробовал использовать || оператора вместо оператора +, но все равно не повезло. Возможно ли это сделать в MySQL, или я тут же подпрыгнул?
Вы пытались использовать функцию concat () ?
 ON tableTwo.query = concat('category_id=',tableOne.category_id) 
 SELECT ..., CONCAT( 'category_id=', tableOne.category_id) as query2 FROM tableOne LEFT JOIN tableTwo ON tableTwo.query = query2 
Вот отличный ответ на этот вопрос:
 SET sql_mode='PIPES_AS_CONCAT'; 
Подробнее здесь: https://stackoverflow.com/a/24777235/4120319
Вот полный SQL:
 SET sql_mode='PIPES_AS_CONCAT'; SELECT * FROM tableOne LEFT JOIN tableTwo ON tableTwo.query = 'category_id=' || tableOne.category_id; 
MySQL использует CONCAT () для объединения строк
 SELECT * FROM tableOne LEFT JOIN tableTwo ON tableTwo.query = CONCAT('category_id=', tableOne.category_id)