mysql - 包含 5 个指定值中的 2 个的行数

标签 mysql

我有下表:

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/

相关文章:

mysql - sql查询返回两条记录之和

mysql - 优化数百万行的 "NOT IN(...)"查询

mysql - 优化MySQL中的子子查询

mysql - 基于多个数据库和表的 ER 图,这些数据库和表从其他表的列值派生名称

php - 拉维尔 : LAST_INSERT_ID() is 0 after insert?

php - 初学者的好奇心

Mysql子查询正确选择列

php - SQL 更新增量不起作用

具有两个不同 UNIQUE 约束的 MySQL INSERT

mysql - 如何在 MySql 中使用 where 和 group by