MYSQL 从列匹配的表中选择

标签 mysql sql

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

例如,表服务器:

---------------------
   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

最佳答案

您可以使用子查询获取带有多个附加 nameip 并将结果放在 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

关于MYSQL 从列匹配的表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28035352/

相关文章:

php - 在 mySQL 中按相关性匹配单词的一部分和顺序

mysql - 如何用表A、B制作表C

sql - 如何替换 INNER JOIN 中不存在的值

sql - 得到两个计数,然后将它们相除

MySQL:同时原子地插入到表和相关表中

java - 致命异常 :Async Task #1

mysql - 统计MYSQL中的查询结果

SQL 更新;根据两列(总计)填充 1 列

MySQL删除具有相同列值的重复行

java - Eclipselink:批量读取创建大量查询