在MySQL表中有以下列:
id, spn(PK), cat1, cat2, cat3, act1, act2, act3
(cat字段是VARCHAR类型,act字段是INT)我需要检查所有catΧ字段的唯一组合总数是否等于所有actX字段的唯一组合,如果不是,则返回找到的不匹配的spn值列表。
我最初的想法是执行concat(cat1,cat2,cat3) as A
以及concat(act1,act2,act3) as B
的选择并比较它们但我不太确定如何执行比较并返回找到的spn列表{} {1}}。欢迎任何想法。
我的应用程序是用PHP编写的,所以如果你可以建议使用PHP的解决方案,那很好。
注意:根据前2个答案,我想澄清一点,我想检查所有猫场的独特组合数是否等于组合的数量。行动领域。
答案 0 :(得分:0)
我不知道列类型,所以我会选择最标准的解决方案:
SELECT spn
FROM table
WHERE cat1 != act1 || cat2 != act2 || cat3 != act3
也许您的数据库设计可以改进。在列名中引入数字通常是错误设计的同义词。
编辑:假设订单在您的排列中不重要:
SELECT id
FROM files_imported
WHERE ((cat1 != cat2) + (cat1 != cat3) + (cat2 != cat3)) != ((act1 != act2) + (act1 != act3) + (act2 != act3))