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

Ben*_*Ben 53 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
Run Code Online (Sandbox Code Playgroud)

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

Wil*_*nah 96

你尝试过使用concat()函数吗?

ON tableTwo.query = concat('category_id=',tableOne.category_id)
Run Code Online (Sandbox Code Playgroud)

  • 由于concat()接受任意数量的参数(http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_concat),你应该能够连接(''',表.柱,'"'); (6认同)

小智 10

SELECT ..., CONCAT( 'category_id=', tableOne.category_id) as query2  FROM tableOne 
LEFT JOIN tableTwo
ON tableTwo.query = query2
Run Code Online (Sandbox Code Playgroud)


小智 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;
Run Code Online (Sandbox Code Playgroud)