我需要在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中执行此操作,还是我在这里跳枪?
答案 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)