如何在一列或多列中查找具有完全相同值的行

时间:2016-05-19 13:56:12

标签: mysql sql

您好,我想知道如何在PHP-MySQL中找到一列或多列中具有相同值的所有行。该值不必指定,因此我想找到所有在表中不具有唯一值的行(意味着至少有另一行具有相同的值)。

例如,表格列为ID | number | value

行是:

1 | 5 | hello
2 | 6 | goodbye
3 | 7 | see you
4 | 6 | hello
5 | 6 | goodbye

我想查询查找字段value中具有相同值的所有行,因此在这种情况下,结果将是行1,4和2,4

另外,我想查询查找numbervalue字段中具有相同值的所有行,因此在示例中结果只是行2,4

我需要检索我找到的所有行,因此SELECT DISTINCT不适合,因为我只检索公共值而不是整行。

2 个答案:

答案 0 :(得分:2)

试试这个:

SELECT ID, number, value
FROM mytable
WHERE value IN (SELECT value
                FROM mytable
                GROUP BY value
                HAVING COUNT(*) >= 2)

这是第二种情况:

SELECT ID, number, value
FROM mytable
WHERE (number, value) IN (SELECT number, value
                          FROM mytable
                          GROUP BY number, value
                          HAVING COUNT(*) >= 2)

答案 1 :(得分:0)

使用exists执行此操作的另一种方法。这将输出不同行中的val相等的行,不同行中的nums相等,如果它们相等则在不同行上的val-num组合。

select * 
from tablename t
where exists (select 1 from tablename t1 
              where t.id <> t1.id and (t.val = t1.val or t.num = t1.num)
              )