在两列mysql查询中匹配值

在两列mysql查询中匹配值,mysql,sql,multiple-columns,Mysql,Sql,Multiple Columns,正在尝试匹配同一表中的两列。希望看到一个设备的输出提供另一个设备的输入。这是一个数据示例。我知道格式不好,但我试过了!共有四列 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.

正在尝试匹配同一表中的两列。希望看到一个设备的输出提供另一个设备的输入。这是一个数据示例。我知道格式不好,但我试过了!共有四列

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  

我不能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

因此,您想查看输出是否与输入相同?是的,就像s101的输出一样,ip是r101的输入ip,因此我需要匹配这两列。因此,在查询的输出中,我需要具有匹配ip的设备的名称和名称。首先,我尝试了一些东西,比如选择名称、输出ip、服务,其中输出ip=输入ip,但没有产生任何效果。我搞砸了一些子查询,结果惨败。谢谢。我明天回到db时会试试的。这看起来与我今天在寻找答案时浏览的其他帖子类似。我只是不熟悉你用s.name和r.name做什么。这是让我困惑的部分,我想了解更多。它被称为“加入”。假设表格是一顶帽子,每一行都是一张有数据的纸。现在,取另一顶帽子,上面有完全相同的纸,将一顶帽子上的纸与另一顶帽子上符合
ON
子句条件的纸配对(这几乎与
WHERE
相同)。
AS r
AS s
部分只是hats的名称,通常不需要它们,除非您想要一个表的快速或更短的名称,或者您有两次相同的表(在这种情况下,您必须重命名其中至少一个以防止歧义),感谢现实世界的类比。这很有帮助。我试着运行那个查询,结果它给了我一个内存不足的错误。该表有170000行,上面的数据集省略了许多列。对于170000行的内存不足,有两种可能的解释:a)DB服务器的内存非常少,b)您拥有的数据需要更多的逻辑才能将一行与对应的一行匹配。我认为是后者。联接的工作方式是,如果一个表中的多行使
ON
条件为真,那么最终将得到那么多行。在我提供的查询中,如果有3行
output\u ip
A和100行
input\u ip
A,那么结果中会有300行。显然,您需要进一步限制
条件,但我们需要更多的数据,这就是为什么我的答案是:我不能100%确定匹配数据的标准是什么