在MySQL中将字符串与字段值连接起来

时间:2013-10-09 01:59:18

标签: php mysql sql concatenation

我需要在MySQL查询中将字符串与字段值连接起来,以便LEFT JOIN两个表。

表1有一个名为“category_id”的列,其中包含数值,例如61,78,94等。

表2有一个名为“query”的列,它引用了一个请求路由机制,它具有诸如“product_id = 68”,“category_id = 74”,“manufacturer_id = 99”等值。

因此,在我的查询中,我需要在从set字符串派生的串联字符串中加入表,并且“category_id”列的值与查询字段匹配。

我的SQL语句目前是:

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

我尝试过使用||运算符而不是+运算符,但仍然没有运气。是不是可以在MySQL中执行此操作,还是我在这里跳枪?

4 个答案:

答案 0 :(得分:96)

您是否尝试过使用concat()功能?

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

答案 1 :(得分:10)

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

答案 2 :(得分:9)

这是一个很好的答案:

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;

答案 3 :(得分:3)

MySQL使用CONCAT()来连接字符串

SELECT * FROM tableOne 
LEFT JOIN tableTwo
ON tableTwo.query = CONCAT('category_id=', tableOne.category_id)