如何使用条款在组中使用或条件

时间:2016-05-23 14:41:07

标签: php mysql

我们如何在下面的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

3 个答案:

答案 0 :(得分:0)

GROUP BY `distance`, `nationwide`
HAVING `distance` <= 50 OR `nationwide` = 1
;

请注意,这将按两个字段值对COUNT s进行分组;如果你想要全国范围内的所有数量= 1和所有距离&gt; = 50的所有数量,你将需要两个单独的查询...而且UNION真的没有意义,因为距离将无关紧要首先,在全国范围内与后者无关。

答案 1 :(得分:-1)

只需使用逗号(,)

(GROUP BY distancedistance&lt; = 50,nationwide = 1)

答案 2 :(得分:-2)

可能它会帮助你

GROUP BY `distance`(HAVING `distance` <= 50 OR `nationwide` = 1);