2013-12-11 36 views
1

结合SQL查询我有以下两个查询:为大于和小于成一个

select count * form a where temp>str group by x,y 
select count * form a where temp<=str group by x,y 

这个结果表的解析两次。由于表格大小为100个演出,我想如果我们可以减少这个单一的查询。

回答

2

试试这个:

SELECT 
    SUM(CASE WHEN `temp` > `str` THEN 1 ELSE 0 END) AS `greater`, 
    SUM(CASE WHEN `temp` < `str` THEN 1 ELSE 0 END) AS `less` 
FROM 
    `a` 
GROUP BY 
    `x`, 
    `y` 
+0

你能解释一下查询吗?结果集将如何显示? –

3
select sum(IF(temp>'str',1,0)) as GREATER, 
     sum(IF(temp<'str',1,0)) as LESSER 
    from a 
    group by x,y 

这将返回一个单行两个领域,更大和更小,其中包含分别比字符串大,小行数的计数。

如果(temp>'str',1,0))返回1,如果更大,否则返回0.总结这些值将给出更大的rwos总数。

IF(temp <'str',1,0))返回1如果更小,否则返回0.总结这些值将给出更小的rwos总数。

+0

你能解释一下查询吗?结果集将如何显示? –