2013-10-09 6 views
51

У меня есть необходимость конкатенации строки с значением поля в запросе MySQL, чтобы LEFT JOIN две таблицы.Объединить строку с значением поля в MySQL

В таблице 1 есть столбец с названием «category_id» с числовыми значениями, такими как 61, 78, 94 и т. Д.

В таблице 2 указан столбец «запрос», который ссылается на механизм маршрута запроса, и он имеет такие значения, как «product_id = 68», «category_id = 74», «manufacturer_id = 99» и т. Д.

Поэтому в моем запросе мне необходимо присоединиться к таблицам, когда когда-либо конкатенированная строка, полученная из заданной строки, и значение столбца «category_id» соответствует полю запроса.

My SQL заявление в настоящее время:

SELECT * FROM tableOne 
LEFT JOIN tableTwo 
ON tableTwo.query = 'category_id=' + tableOne.category_id 

Я попытался с помощью || оператора вместо оператора +, но все равно не повезло. Возможно ли это сделать в MySQL, или я тут же подпрыгнул?

ответ

93

Вы пробовали использовать функцию concat()?

ON tableTwo.query = concat('category_id=',tableOne.category_id) 
+0

Отлично! Я попытался использовать 'CONCAT_WS ('=', 'category_id', tableOne.category_id)', но, похоже, это была неправильная функция целиком! спасибо! – Ben

+0

Все в порядке. Но как я могу конкатенировать по обе стороны поля. например добавление котировок с обеих сторон меню, например: "menuid1".? – ShivarajRH

+6

Поскольку concat() принимает произвольное количество аргументов (http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_concat), вы должны иметь возможность concat ('"', table.column, '"'); – Will

3

MySQL использует CONCAT() для конкатенации строк

SELECT * FROM tableOne 
LEFT JOIN tableTwo 
ON tableTwo.query = CONCAT('category_id=', tableOne.category_id) 
10
SELECT ..., CONCAT('category_id=', tableOne.category_id) as query2 FROM tableOne 
LEFT JOIN tableTwo 
ON tableTwo.query = query2 
+0

Спасибо за ваш ответ, это элегантное решение! – Ben

7

Вот отличный ответ на этот вопрос:

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; 
Смежные вопросы