web-dev-qa-db-ja.com

MySQLで文字列をフィールド値と連結します

2つのテーブルをLEFT JOINするために、MySQLクエリでフィールド値と文字列を連結する必要があります。

表1には、「category_id」という列があり、61、78、94などの数値が含まれています。

表2には、リクエストルートメカニズムを指す「クエリ」という列があり、「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でこれを行うことは可能ですか、それともここで大急ぎしましたか?

53
Ben

concat() 関数を使用してみましたか?

ON tableTwo.query = concat('category_id=',tableOne.category_id)
96
Will Hannah
SELECT ..., CONCAT( 'category_id=', tableOne.category_id) as query2  FROM tableOne 
LEFT JOIN tableTwo
ON tableTwo.query = query2
10
chadzheng

以下がその答えです。

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;
9
David Namenyi

MySQLは CONCAT() を使用して文字列を連結します

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