2013-12-18 98 views
0

嘗試匹配同一表中的兩列。希望看到一個設備的輸出提供另一個設備的輸入。這是一個數據樣本。我知道格式不好,但我確實嘗試過!有四列。匹配兩列中的值mysql查詢

name output_ip input_ip service 
s101 69.255.255.12 192.168.1.2 apple 
s101 69.255.255.12 192.168.1.3 orange 
s102 69.252.102.102 192.168.1.4 grape 
s102 69.252.102.102 192.168.1.5 kiwi 
s103 10.89.96.102 192.168.1.6 strawberry 
s103 10.89.96.102 192.168.1.7 banana 
s104 10.252.36.21 192.168.1.8 pear 
s104 10.252.36.21 192.168.1.9 plum 
r101 192.168.0.23 69.255.255.12 
r101 192.168.0.23 69.255.255.12 
r102 192.168.0.24 69.252.102.102 
r102 192.168.0.24 69.252.102.102 
r103 192.168.0.25 10.89.96.102  
r103 192.168.0.25 10.89.96.102  
r104 192.168.0.26 10.252.36.21  
r104 192.168.0.26 69.255.255.12 

想輸出這樣

s101 r101 apple 69.255.255.12 
s101 r101 orange 69.255.255.12 
s102 r102 grape 69.252.102.102 
S102 r102 kiwi 69.252.102.102 
S103 r103 strawberry 10.89.96.102 
S103 r103 banana 10.89.96.102 
S104 r104 pear 10.252.36.21 
S101 r104 69.255.255.12 
+0

哪裏碼? – Ljubisa

+0

所以你想看看輸出是否與輸入相同? –

+0

是的,像s101的output_ip是r101的輸入ip,所以我需要匹配這兩列。 – user3113612

回答

0

我不是100%肯定的是,以匹配數據的標準。

我最好的猜測是,你需要加入表本身,假設表名爲data

SELECT 
    s.name, 
    r.name, 
    s.service, 
    s.output_ip 
FROM 
    data AS s 
    JOIN data AS r ON s.output_ip = r.input_ip 
GROUP BY 
    s.name, r.name, s.output_ip. s.service 
+0

謝謝。當我回到數據庫時,我會在明天嘗試。這看起來類似於我試圖找到答案時正在查看的其他帖子。我只是不熟悉你在用s.name和r.name做什麼。這是混淆我的部分,我想了解更多。 – user3113612

+0

它被稱爲「連接」。想象一下,桌子是一頂帽子,每一行都是一張紙和數據。現在再拿一個帽子,上面寫着完全相同的文章,並將其中一個帽子上的文章與其他與ON條件中條件匹配的文件(與WHERE幾乎相同)配對。 'AS r'和'AS s'部分只是帽子的名字,通常不需要它們,除非你想要一個表格的快或者更短的名字,或者你有兩次相同的表格(在這種情況下,你必須重命名爲其中至少有一個是爲了防止模棱兩可) – Toote

+0

感謝真實世界的類比。這有幫助。我試圖運行該查詢,它最終給我一個內存不足的錯誤。該表有170,000行,上面的數據集留下了許多列。 – user3113612