我写了一个查询,它给了我单独的行的结果,但问题是我想要单行结果。如何结合使用MySQL的SQL语句的结果
其中给出导致像下面
这里计数有两种可能性yes或no。
,但我想是这样
对整个结果我要为同一个系统的名字结合起来,有没有办法做到这一点。
我写了一个查询,它给了我单独的行的结果,但问题是我想要单行结果。如何结合使用MySQL的SQL语句的结果
其中给出导致像下面
这里计数有两种可能性yes或no。
,但我想是这样
对整个结果我要为同一个系统的名字结合起来,有没有办法做到这一点。
COUNT()函数接受复杂的表达式,而不仅仅是列名。我不认为我完全理解你的数据中包含或你想完成什么,但你可以尝试在这条线的东西:
SELECT service.sys_name AS sysname,
COUNT(CASE status.status WHEN 'yes' THEN 1 END) AS count_yes,
COUNT(CASE status.status WHEN 'no' THEN 1 END) AS count_no
...
这将省去NULL
值。
它没有给出正确的结果。这个查询是错误的 – Bhagya
@Bhagya这几乎是正确的查询。问题是你想在'service.sys_name'字段上使用过滤器来从中删除数字。你必须为此定义规则。人们不能认为这个名字总是有一个数字,而只是在字符串的末尾。如果你定义这个规则,你可能会得到这个答案的更新。 –
而对于答案,这应该是SUM,而不是COUNT,count会计算它是1还是0. –
你问单列,但给出一个输出的例子有三列: –
已更新的问题@ÁlvaroGonzález – Bhagya
出于好奇,是'where service.ip_port in(select ip_port from service)'试图过滤掉NULL?因为我认为'WHERE service.ip_port不是NULL'感觉更自然。 –