2017-09-29 8 views
0

私は、IPを開始するサブネット外のキーの両方の2つのデータソースに参加しようとしています。しかし、それぞれの開始IPは別々に記録されます。最初のIPに基づいて2つのテーブルを結合するのにどの構文を使用できますか?最後の文字は使用できません。同じキーで2つのテーブルを結合するにはどうすればよいですか?

各テーブルの両方の説明列を持つ結果を作成する必要があります。

ありがとうございました!

table 1: 
 
"Starting IP" "Ending IP" "Description_1" 
 
10.16.0.1  10.16.0.254 "REF#12345678" 
 
10.16.1.1  10.16.1.254 "REF#987654321" 
 
10.16.2.1  10.16.2.254 "REF#147258369" 
 

 
table 2: 
 
"Starting IP" "Ending IP" "Description_2" 
 
10.16.0.0  10.16.0.255 "testing by Bill" 
 
10.16.1.0  10.16.1.255 "production by Ann" 
 
10.16.2.0  10.16.2.255 "VoIP by George" 
 

 
desired query result: 
 
"Starting IP" "Ending IP" "Description_1" "Description_2" 
 
10.16.0.0  10.16.0.255 "REF#12345678" "testing by Bill" 
 
10.16.1.0  10.16.1.255 "REF#987654321" "production by Ann" 
 
10.16.2.0  10.16.2.255 "REF#147258369" "VoIP by George"

答えて

1

SUBSTRING_INDEX(str, delim, count)countdelimに遭遇しており、おそらく大丈夫あなたを提供する前の文字列を返します。

SELECT table2.*, table1.Description_2 
FROM table2 
LEFT JOIN table1 ON 
    (substring_index(table2.`Starting IP`,'.',3) 
    =substring_index(table1.`Starting IP`,'.',3)) 

ただし、これはあまり効率的ではありません。それを文字列としてではなく実際のビット文字列にエンコードすると、ビット単位のANDなどの論理関数を使用できるようになり、より効率的になります。

+0

チャームのように働いた!ありがとうございました! – Sonic84

関連する問題