2017-07-01 9 views
0

表Aは、次のようになります。サブクエリにMySQL JOIN?

uuid 
---------------- 
0681a8ff0e114680b2688c538d92f3cb 
148ba55922544c1b8ea8e7d43ffb8095 

表Bは、次のようになります。

uuid         | username 
----------------------------------------------- 
0681a8ff-0e11-4680-b268-8c538d92f3cb | test123 
148ba559-2254-4c1b-8ea8-e7d43ffb8095 | poop123 
ac123b2a-6546-8979-3213-cb426aac426b | blabla 

私は、それぞれのユーザ名とテーブルaから全ての値を選択するにはどうすればよいですか?表aにはハイフンのないUUIDがあり、表bにはハイフンが付いています。

私はダッシュを追加して、テーブルaからUUIDを選択する方法を知っている(いずれもCLOBデータ・タイプはVARCHARSはしかしです):

SELECT CONCAT_WS('-',MID(uuid,1,8),MID(uuid,9,4),MID(uuid,13,4),MID(uuid,17,4),MID(uuid,21,1000)) 

私はまた、列に基づいて2つのテーブルを結合する方法を知っているが、私はできませんダッシュを追加する方法と結合を1つのクエリですべて実行する方法を理解してください。

答えて

2

だけon句にハイフンを削除します。

select . . . 
from a join 
    b 
    on a.uuid = replace(b.uuid, '-', ''); 

その後、戻って元のデータを修正する方法を見つけ出します。あなたのキーは、外部キー参照のための同じタイプとフォーマットでなければなりません。

+0

は、私はそのことを考えていなかったと信じてすることはできません。.. 私はb.uuid SELECT ' を使用して、それを解決し、Bからb.usernameがb.uuid = CONCAT_WS(ON JOINの ' - '、MID(A MID(auu、1,8)、MID(auu、9,4)、MID(auu、13,4)、MID(auu、17,4)、MID(auu、21,1000 )) ') –