8

理解できません。私はもう試した:

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

このスキーマがあるので、countryidを組み合わせる必要があります。country.idtable2.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ドキュメントに表示されません。

…すべての引数が非バイナリ文字列の場合、結果は非バイナリ文字列になります。引数にバイナリ文字列が含まれている場合、結果はバイナリ文字列になります。数値引数は、同等の2進文字列形式に変換されます。それを避けたい場合は、明示的な型キャストを使用できます…</ p>

これの功績はAurimasMikalauskasにあります。

于 2015-11-26T20:22:22.493 に答える