8

我不明白。我试过了:

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

我需要结合countryidtocountry.id因为table2.code有这个模式。

提前致谢。

4

2 回答 2

12

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

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 示例

于 2013-03-09T17:42:50.727 回答
7

对于因连接性能不佳而拉出头发的任何人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 文档中:

…如果所有参数都是非二进制字符串,则结果是非二进制字符串。如果参数包含任何二进制字符串,则结果为二进制字符串。一个数字参数被转换成其等效的二进制字符串形式;如果你想避免这种情况,你可以使用显式类型转换...... </p>

这要归功于 Aurimas Mikalauskas

于 2015-11-26T20:22:22.493 回答