我有以下两个问题:
select count * form a where temp>str group by x,y
select count * form a where temp<=str group by x,y
这导致两次解析表。由于表格大小是100个演出,我在想是否可以将其减少到单个查询。
答案 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`