У меня есть необходимость конкатенировать строку с значением поля в запросе 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)