您好,我想知道如何在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
另外,我想查询查找number
和value
字段中具有相同值的所有行,因此在示例中结果只是行2,4
我需要检索我找到的所有行,因此SELECT DISTINCT
不适合,因为我只检索公共值而不是整行。
答案 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)
)