56

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

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

表二有一列叫做“query”,指的是请求路由机制,它的值有“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 中做到这一点,或者我在这里跳了枪?

4

4 回答 4

102

您是否尝试过使用concat()函数?

ON tableTwo.query = concat('category_id=',tableOne.category_id)
于 2013-10-09T02:01:48.633 回答
10
SELECT ..., CONCAT( 'category_id=', tableOne.category_id) as query2  FROM tableOne 
LEFT JOIN tableTwo
ON tableTwo.query = query2
于 2013-10-09T02:06:59.417 回答
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;
于 2016-05-10T18:51:55.780 回答
3

MySQL 使用CONCAT()连接字符串

SELECT * FROM tableOne 
LEFT JOIN tableTwo
ON tableTwo.query = CONCAT('category_id=', tableOne.category_id)
于 2013-10-09T02:05:39.577 回答