我有下表:
n1|n2|n3|n4|n5
1| 5| 4| 7|26
26|80|75| 1|10
5| 3| 2| 1|4
45|26|88| 3|66
88|48| 1|69|90
我正在尝试获取出现 5 个指定值中的 2 个的行数。 例子: 26、1 和 88。 在上表中,26 和 1 出现在 2 行(第 1 行和第 2 行); 26 和 88 出现在 1 行(第 4 行); 88 和 1 出现在 1 行(第 5 行)。
我可以使用
SELECT COUNT(*) FROM your_table
WHERE 1 IN (n1,n2,n3,n4,n5) OR 26 IN (n1,n2,n3,n4,n5) OR 88 IN (n1,n2,n3,n4,n5)
但这样我也能得到只包含 1 个数字的行。
是否有一种快速的方法可以在 mySQL 中执行此操作,或者我应该在 PHP 中构建一些函数?
非常感谢您的帮助
最佳答案
in()
如果值存在则返回 1,如果不存在则返回 0,因此您可以将它们相加并查找 2。
SELECT COUNT(*)
FROM your_table
WHERE ((1 IN (n1,n2,n3,n4,n5)) + (26 IN (n1,n2,n3,n4,n5)) + (88 IN (n1,n2,n3,n4,n5))) = 2
关于mysql - 包含 5 个指定值中的 2 个的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12215578/