两个相同的公式产生不同的结果

工作室时间

我有一个项目表和一个类别表。每个项目都保存有其坐标,纬度(lat)和经度(lon),以允许用户进行地理搜索。

当我搜索商品时,那些与用户的经度和纬度完全相同的商品会在一个查询中显示,而在另一个查询中却不显示。

一个查询仅选择类别(2)中范围(<1)内的所有项目。

SELECT *, c.name as category, c.category_id as CATid, 
( 3959 * acos( cos( radians(52.993252) ) 
* cos( radians( i.latitude ) ) 
* cos( radians( i.longitude ) - radians(-0.412470) ) 
+ sin( radians(52.993252) ) 
* sin( radians( i.latitude ) ) ) ) AS distance 
from items i 
join categories c on i.category=c.category_id 
where i.category=2 group by i.item_id 
HAVING distance < 1 
order by distance

另一个查询选择所有类别,并计算指定地理范围(<1)内每个类别中的项目数

SELECT *, ( SELECT ( count( 3959 * acos( cos( radians(52.993252) ) 
* cos( radians( latitude ) ) 
* cos( radians( longitude ) 
- radians(-0.412470) ) 
+ sin( radians(52.993252) ) 
* sin( radians( latitude ) ) ) )) AS distance 
FROM items 
WHERE category = category_id 
HAVING distance < 2  ) AS howmanyCat,
( SELECT name FROM categories WHERE category_id = c.parent ) AS parname 
FROM categories c ORDER BY category_id, parent

奇怪的是,如果您在第二个查询中将搜索距离参数更改为2,它将找到它!

有任何想法吗?

这是摆弄我的意思的小提琴

戈登·利诺夫

第二个查询将count()分配distance

首先是将算术运算分配为distance

首先是做您想做的事,这是一个更清晰的查询。

编辑:

我还注意到,第一个查询是由聚合的item_id第二个方法不是在外部查询中进行显式聚合,而是选择所有类别。这是版本之间的另一个区别。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

两个相同的公式产生不同的结果

来自分类Dev

为什么两个看似相同的变量会产生两个不同的结果?

来自分类Dev

funsafe-math优化,在两个不同的行上使用相同的公式,结果不同

来自分类Dev

funsafe-math优化,在两个不同的行上使用相同的公式,结果不同

来自分类Dev

为什么使用相同种子创建的两个Random对象从hashcode()产生不同的结果

来自分类Dev

当仅更改字段,值时,oracle为两个相同的查询产生不同的结果

来自分类Dev

函数的两个版本未产生相同的结果

来自分类Dev

代码在删除if语句时产生两个不同的结果

来自分类Dev

编写两个不同的SharedPreference并获得相同的结果

来自分类Dev

如何模拟两个相同的mongo集合,但结果不同?

来自分类Dev

MatLab:相同的功能获得两个不同的结果

来自分类Dev

两个不同的终端行命令 - 结果相同

来自分类Dev

cmd'java'产生两个结果

来自分类Dev

PHP:for循环两次显示相同的结果,而不是两个不同的结果?

来自分类Dev

产生两个相同的随机数而另一个不同

来自分类Dev

两个单精度浮点向量的点积在CUDA内核中产生的结果与在主机上产生的结果不同

来自分类Dev

为什么这两个代码片段会产生相同的结果?

来自分类Dev

两个规则在mod_rewrite中产生相同的结果

来自分类Dev

为什么这两个代码片段会产生相同的结果?

来自分类Dev

连接两个表并在两个不同的行中产生具有相同值的表

来自分类Dev

R:为什么对于相同的点,来自两个不同软件的这两个不同的结果(拟合曲线)?

来自分类Dev

为什么两个相同值的按位与运算会产生不同的值?

来自分类Dev

两个不同的正弦波产生相同的输出?

来自分类Dev

为什么这两个python正则表达式产生不同的结果?

来自分类Dev

使用两个日期比较而不是日期范围查询会在MongoDB中产生不同的结果

来自分类Dev

sql:比较具有不同值的两个表会产生重复的结果

来自分类Dev

针对相同的Entity Framework DbSet的两个不同的LINQ查询,均返回相同的结果

来自分类Dev

不同哈希码的结果,但对于两个java对象而言,结果相同

来自分类Dev

相同的图像操作应用于两个不同的PDF,结果不同

Related 相关文章

  1. 1

    两个相同的公式产生不同的结果

  2. 2

    为什么两个看似相同的变量会产生两个不同的结果?

  3. 3

    funsafe-math优化,在两个不同的行上使用相同的公式,结果不同

  4. 4

    funsafe-math优化,在两个不同的行上使用相同的公式,结果不同

  5. 5

    为什么使用相同种子创建的两个Random对象从hashcode()产生不同的结果

  6. 6

    当仅更改字段,值时,oracle为两个相同的查询产生不同的结果

  7. 7

    函数的两个版本未产生相同的结果

  8. 8

    代码在删除if语句时产生两个不同的结果

  9. 9

    编写两个不同的SharedPreference并获得相同的结果

  10. 10

    如何模拟两个相同的mongo集合,但结果不同?

  11. 11

    MatLab:相同的功能获得两个不同的结果

  12. 12

    两个不同的终端行命令 - 结果相同

  13. 13

    cmd'java'产生两个结果

  14. 14

    PHP:for循环两次显示相同的结果,而不是两个不同的结果?

  15. 15

    产生两个相同的随机数而另一个不同

  16. 16

    两个单精度浮点向量的点积在CUDA内核中产生的结果与在主机上产生的结果不同

  17. 17

    为什么这两个代码片段会产生相同的结果?

  18. 18

    两个规则在mod_rewrite中产生相同的结果

  19. 19

    为什么这两个代码片段会产生相同的结果?

  20. 20

    连接两个表并在两个不同的行中产生具有相同值的表

  21. 21

    R:为什么对于相同的点,来自两个不同软件的这两个不同的结果(拟合曲线)?

  22. 22

    为什么两个相同值的按位与运算会产生不同的值?

  23. 23

    两个不同的正弦波产生相同的输出?

  24. 24

    为什么这两个python正则表达式产生不同的结果?

  25. 25

    使用两个日期比较而不是日期范围查询会在MongoDB中产生不同的结果

  26. 26

    sql:比较具有不同值的两个表会产生重复的结果

  27. 27

    针对相同的Entity Framework DbSet的两个不同的LINQ查询,均返回相同的结果

  28. 28

    不同哈希码的结果,但对于两个java对象而言,结果相同

  29. 29

    相同的图像操作应用于两个不同的PDF,结果不同

热门标签

归档