将SQL查询组合为大于和小于一

时间:2013-12-11 11:33:31

标签: mysql 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 个答案:

答案 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

这将返回包含两个字段GREATER和LESSER的单行,其中包含分别大于和小于字符串的行数。

IF(temp&gt;'str',1,0))如果更大则返回1,否则为0.对这些值求和将给出更大的rwos总数。

IF(temp&lt;'str',1,0))如果较小则返回1,否则为0.对这些值求和将给出较小的rwos总数。

答案 1 :(得分: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`