如何根据给定的条件在Mysql中获取下表的ICNO和Count(ICNO)?

如何根据给定的条件在Mysql中获取下表的ICNO和Count(ICNO)?,mysql,Mysql,问题: 我有一个表tbl_学生申请如下和可能 列idprogram的值为1,2,3,4 如何从表中获取ICNO和countICNO,其中仅3,4中的idprogram。如果ICNO属于1,2中的idprogram,则不获取ICNO 我曾尝试在mysql中使用子查询,但由于表太大,它需要更多的执行时间,并且没有得到任何输出。表几乎由30列和一行组成 输出: 你是说像这样的事吗 SELECT ICNO, count(ICNO) FROM tbl_studentapplication WHERE I

问题: 我有一个表tbl_学生申请如下和可能 列idprogram的值为1,2,3,4

如何从表中获取ICNO和countICNO,其中仅3,4中的idprogram。如果ICNO属于1,2中的idprogram,则不获取ICNO

我曾尝试在mysql中使用子查询,但由于表太大,它需要更多的执行时间,并且没有得到任何输出。表几乎由30列和一行组成

输出:


你是说像这样的事吗

SELECT ICNO, count(ICNO)
FROM tbl_studentapplication
WHERE ICNO NOT IN (
    SELECT DISTINCT ICNO
    FROM tbl_studentapplication
    WHERE IdProgram IN (1,2)
)
GROUP BY ICNO

您可能需要在IdProgram和ICNO上建立索引,以加快此查询速度

对于您的查询,您将从上表中获得最后3行。我只需要ICNO和计数ICNO属于IdProgram 3或4而不属于1,2的位置。您可以使用此选项吗?选择ICNO,countICNO FROM tbl_studentapplication其中ICNO NOT IN选择DISTINCT ICNO FROM tbl_studentapplication其中IdProgram IN IN 1,2 Yes我已经执行了您的查询,但在PHPMYADMIN中没有显示任何内容我想我需要按照您的指示添加索引当我使用您提供的数据并对其运行查询时,我得到了正确的结果,我会再次更新我的答案,我会检查并确认,我非常感谢你。
 1              123      1
 2              345      2
 3              123      3
 4              345      4
 5              1234     3
ICNO count(ICNO)
1234           1
SELECT ICNO, count(ICNO)
FROM tbl_studentapplication
WHERE ICNO NOT IN (
    SELECT DISTINCT ICNO
    FROM tbl_studentapplication
    WHERE IdProgram IN (1,2)
)
GROUP BY ICNO