繁体   English   中英

从列匹配的表中选择MYSQL

[英]MYSQL select from a table where columns match

我需要查询一些数据库中某一列中有重复项的行。

例如 ,表servers

---------------------
   name  |     ip     
---------------------
| bob    | 10.1.2.3 |
| larry  | 10.1.2.3 |
| sam    | 10.9.9.9 |
| george | 10.9.9.9 |
| bill   | 10.6.6.6 |
| anne   | 10.7.7.7 |

我需要查询来查询bob,larry,sam,george的行,因为它们在第二列中具有匹配项/重复项(在本例中为IP地址)。

“ bill”和“ anne”不会返回,因为它们具有唯一的IP

您可以使用子查询来获取具有多个附加name ip并将结果放在IN子句中:

SELECT * 
FROM servers
WHERE ip IN ( SELECT ip 
              FROM servers
              GROUP BY ip 
              HAVING COUNT(*) > 1)

SQLFiddle

或者您可以使用JOIN ,逻辑是一样的:

SELECT t1.*
FROM servers t1 JOIN (
    SELECT ip 
    FROM servers
    GROUP BY ip 
    HAVING COUNT(*) > 1
) t2 ON t1.ip = t2.ip

SQLFiddle

SELECT DISTINCT x.* 
           FROM my_table x 
           JOIN my_table y 
             ON y.name <> x.name 
            AND y.ip = x.ip;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM