Php MYSQL在同一个表中选择

Php MYSQL在同一个表中选择,php,mysql,Php,Mysql,我有一个表,我需要一个MYSQL Select语句,这样我就可以找到损坏的数据并手动修复它 样本表 TABLE_A id | type | value1 | value2 1 | 10 | 123 | 987 2 | 10 | 123 | 987 3 | 10 | 123 | 789 4 | 20 | 123 | 987 5 | 20 | 456 | 987 6 | 30 | 123 | null 7 | 30 |

我有一个表,我需要一个MYSQL Select语句,这样我就可以找到损坏的数据并手动修复它

样本表

TABLE_A id | type | value1 | value2 1 | 10 | 123 | 987 2 | 10 | 123 | 987 3 | 10 | 123 | 789 4 | 20 | 123 | 987 5 | 20 | 456 | 987 6 | 30 | 123 | null 7 | 30 | 123 | null 8 | 40 | 123 | 987 表A id |类型|值1 |值2 1 | 10 | 123 | 987 2 | 10 | 123 | 987 3 | 10 | 123 | 789 4 | 20 | 123 | 987 5 | 20 | 456 | 987 6 | 30 | 123 |空 7 | 30 | 123 |空 8 | 40 | 123 | 987 我需要一个select语句,该语句将列出记录,如果它们具有相同的“类型”和值1不相同和/或值2不相同

比如说

  • ID 1,2,3-将显示,因为ID 3中的value2不同,并且它们具有相同的“类型”

  • 将显示ID 4,5,因为value1不同,并且它们具有相同的“类型”

  • ID 6,7将不显示,因为同一“类型”的value1和value2相同

  • ID 8将不显示,因为只有一个具有此类型

这几天我一直在想办法解决这个问题,需要一些帮助。谢谢

选择a.id作为问题id
SELECT a.id as problem_id
FROM TABLE_A as a JOIN TABLE_A as b
ON a.type = b.type
WHERE a.value1 <> b.value1 OR a.value2 <> b.value2
GROUP BY problem_id;
从表A作为联接表A作为联接表b 在a.type=b.type上 其中a.value1 b.value1或a.value2 b.value2 按问题编号分组;
试试:

SELECT * FROM TABLE_A WHERE type IN (SELECT type FROM TABLE_A GROUP BY `type`, `value1`, `value2` HAVING count(value1) > 1 OR count(value2) > 1)

是否指定了类型?(例如,
type
='$type'或query必须按类型对结果进行分组?)在测试中效果良好。我现在将在主数据库中尝试它。谢谢@Tudor!向上投票和接受回答是表达您感激之情的好方法:)刚刚测试过,这不会比较值1或值2。它应该
按它们分组如果它们不同,
COUNT
函数返回不同项目的数量