2016-09-14 49 views
0

我写了一个查询,它给了我单独的行的结果,但问题是我想要单行结果。如何结合使用MySQL的SQL语句的结果

其中给出导致像下面

这里计数有两种可能性yes或no

,但我想是这样

对整个结果我要为同一个系统的名字结合起来,有没有办法做到这一点。

+0

你问单列,但给出一个输出的例子有三列: –

+0

已更新的问题@ÁlvaroGonzález – Bhagya

+0

出于好奇,是'where service.ip_port in(select ip_port from service)'试图过滤掉NULL?因为我认为'WHERE service.ip_port不是NULL'感觉更自然。 –

回答

1

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值。

+0

它没有给出正确的结果。这个查询是错误的 – Bhagya

+0

@Bhagya这几乎是正确的查询。问题是你想在'service.sys_name'字段上使用过滤器来从中删除数字。你必须为此定义规则。人们不能认为这个名字总是有一个数字,而只是在字符串的末尾。如果你定义这个规则,你可能会得到这个答案的更新。 –

+1

而对于答案,这应该是SUM,而不是COUNT,count会计算它是1还是0. –