gpt4 book ai didi

php - GroupBy 和 where 条件 NOT IN 不能同时工作

转载 作者:行者123 更新时间:2023-11-29 15:53:06 25 4
gpt4 key购买 nike

您好,我正在尝试根据距离从数据库中获取结果,并且也不想在返回数据中包含某些 id 存在的行。但问题是,如果我进行分组,那么它会忽略 WHERE 条件。

这是我的查询

SELECT ( 3959 * ACOS( COS( RADIANS(31.45583995) ) * COS( RADIANS( Room.lat ) )
* COS( RADIANS(Room.long) - RADIANS(73.12997248)) + SIN(RADIANS(31.45583995))
* SIN( RADIANS(Room.lat)))) AS distance,
`Room`.*, `User`.*, `Room`.`id`
FROM `bring_messenger`.`room` AS `Room`
LEFT JOIN `bring_messenger`.`user` AS `User` ON (`Room`.`user_id` = `User`.`id`)
JOIN `bring_messenger`.`room_member` AS `RoomMember` ON (`RoomMember`.`room_id` = `Room`.`id`)
WHERE ((`Room`.`user_id` NOT IN (2)) OR (`RoomMember`.`member_id` NOT IN (2)))
GROUP BY distance
HAVING distance < 100
ORDER BY `distance` ASC

问题是它给了我包含user_id = 2的数据。但是,如果我删除 GROUP BY 条件,则条件会成功运行。

所以请帮助我如何不包含某些行并根据距离对结果进行排序。

最佳答案

分组依据与聚合函数一起使用,例如 SUM、AVG、MAX、MIN 和 COUNT 。并且您将需要包含 Select 语句中提到的完整列组,除了一个列(通常是聚合函数的结果列)。房间和用户的不同组合可能存在相同的距离值,这会使 SQL 混淆根据距离的一个特定值获取房间和用户的哪一个数据。分组示例:

SELECT 
c1, c2,..., cn, aggregate_function(ci)
FROM
table
WHERE
where_conditions
GROUP BY c1 , c2,...,cn;

关于php - GroupBy 和 where 条件 NOT IN 不能同时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56661113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com