我们如何在下面的group by子句中使用OR条件是我的SQL查询
SELECT count(id) as num_rows,
(3959 * acos ( cos ( radians(41.766908)) * cos( radians( lat ) ) * cos( radians( lon ) - radians(-81.1526976)) + sin ( radians(41.766908) ) * sin( radians( lat ) ))) AS distance
FROM (`items`)
WHERE `status` = 1
GROUP BY `distance`
HAVING `distance` <=50
在此查询中,我必须添加 OR 条件以及
的group by子句 (GROUP BY `distance` HAVING `distance` <=50 OR `nationwide`=1)
我们如何执行上述查询??
以下是我的结果 - 我必须在by子句
中添加OR条件id全国距离
1 2 22.4347083649522
1 2 46.8127635462102
8 2 10.0201103523007
13 1 11.888890536392
答案 0 :(得分:0)
GROUP BY `distance`, `nationwide`
HAVING `distance` <= 50 OR `nationwide` = 1
;
请注意,这将按两个字段值对COUNT
s进行分组;如果你想要全国范围内的所有数量= 1和所有距离&gt; = 50的所有数量,你将需要两个单独的查询...而且UNION真的没有意义,因为距离将无关紧要首先,在全国范围内与后者无关。
答案 1 :(得分:-1)
只需使用逗号(,)
(GROUP BY distance
有distance
&lt; = 50,nationwide
= 1)
答案 2 :(得分:-2)
可能它会帮助你
GROUP BY `distance`(HAVING `distance` <= 50 OR `nationwide` = 1);