MySql - 使用左外连接查询concat

时间:2013-03-09 17:27:49

标签: mysql select left-join concat

我不明白。我试过了:

SELECT
table1.name, CONCAT( country,  '.', id ) AS table1.code,
table2.name
FROM tabel1
LEFT OUTER JOIN
table2 ON ( table1.code = table2.code )

我需要将countryid合并到country.id,因为table2.code具有此架构。

提前致谢。

2 个答案:

答案 0 :(得分:9)

如果我理解你是对的,你可能需要这样的东西

SELECT t1.name t1_name,
       t2.name t2_name
FROM table1 t1 LEFT JOIN
     table2 t2 ON CONCAT(t1.country,  '.', t1.id ) = t2.code

<强> SQLFiddle example

答案 1 :(得分:4)

对于因ON CONCAT()联接效果不佳而拔出头发的人:确保将非字符串值转换为CHAR,这样可以提高天文数据的性能:

SELECT t1.name t1_name,
       t2.name t2_name
FROM table1 t1 LEFT JOIN
     table2 t2 ON CONCAT(t1.country,  '.', CAST(t1.id AS CHAR) ) = t2.code

解释隐藏在CONCAT()函数的MySQL文档中:

  

...如果所有参数都是非二进制字符串,则结果为非二进制   串。如果参数包含任何二进制字符串,则结果为a   二进制字符串数字参数将转换为其等效参数   二进制串形式;如果你想避免这种情况,可以使用显式   输入强制 ...

归功于Aurimas Mikalauskas