Mysql 无法将子查询sql与单个表一起使用

Mysql 无法将子查询sql与单个表一起使用,mysql,Mysql,我正在尝试使用mysql查询一个网络数据包表。但我不能使用sql的子查询。这是我的桌子结构 CREATE TABLE netpacket IF NOT EXISTS (src_port INT, status STRING); 这是我的表的前5条记录(共有17k条记录)的方式: 给定表格中有五种状态(即活动、断开连接、连接、空闲、运行) 现在我想做的是,我想要src_端口的计数和数量以及它的状态如下: --------------------------------------------

我正在尝试使用mysql查询一个网络数据包表。但我不能使用sql的子查询。这是我的桌子结构

CREATE TABLE netpacket IF NOT EXISTS
(src_port INT,
 status STRING);
这是我的表的前5条记录(共有17k条记录)的方式:

给定表格中有五种状态(即活动、断开连接、连接、空闲、运行)

现在我想做的是,我想要src_端口的计数和数量以及它的状态如下:

 -----------------------------------------------------  
|    src_port    |  src_port_count    |  status       |
 -----------------------------------------------------
|    8000        |       2            |  running      |
 -----------------------------------------------------
|    53          |       2            |  disconnected |
 -----------------------------------------------------
|    53          |       3            |  active       |
 -----------------------------------------------------
这就是我到目前为止所尝试的

select count(src_port) as src_port_count from netpacket where status in (select status from netpacket  where status='running')

但只有我犯了这样的错误

SYNTAX_ERROR: line 1:60: value and result of subquery must be of the same type for IN expression: integer vs varchar
我不确定是否有子查询,但是否有其他方法可以实现这一点

我想知道src_端口的数量和状态

您似乎在寻找一个简单的聚合查询。我不认为有必要在这里进行调查:

select src_port, status, count(*) from netpacket group by src_port, status

好的,我尝试了这个查询,但是它显示了所有有状态和没有状态的端口。我怎样才能纠正这个问题。只需要打印状态为的端口!!。我尝试使用null和NOTNULL关键字,但没有成功。谢谢@NiranjanKulkarni:您是否有
状态
?它没有显示在您的示例数据中。您只需添加一个
where
子句来消除这些限制:
从netpacket中选择src_端口,status,count(*),其中status为not null,按src_端口分组,status
为not null
不起作用,它显示的列完全为空。相反,我使用了
操作符,它工作了。谢谢@NiranjanKulkarni:欢迎!好的,所以这些值不是空的,而是空的。
select src_port, status, count(*) from netpacket group by src_port, status