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