gpt4 book ai didi

mysql 行比较游标与连接

转载 作者:行者123 更新时间:2023-11-30 01:33:05 25 4
gpt4 key购买 nike

我需要比较表中的所有行,并且需要对每次比较进行一些计算。

例如:我有 3 个用户。我需要比较 a->b 并给 b 一些标记并将其插入到另一个表中,然后 a->c 进行计算并存储在上面的同一个表中,然后需要比较 b->c进行计算并将计算出的值插入到表中。然后c->a,c->b,-a同上。

我们如何进行此类比较?我应该使用光标吗?还有其他简单的方法吗?

我能够编写一个像这样的简单连接查询,但不知道如何进行计算并将其插入到另一个表中。

id,userid,lat,lng 是表结构。我需要在每次比较中返回 lat 和 lng(我的意思是当我对用户进行用户操作时),然后为第二个值分配一个值如上所述的用户。id 是 pk,userid 将是一个非重复值并且是唯一的。基本上,在返回 lat 和 lng 时,我需要根据一对一比较检查每个用户的距离计算,然后根据距离给出分数根据用户 ID 将这些标记存储在另一个表中。

在t1.userid上从表t1连接表t2中​​选择*!=t2.userid

最佳答案

Distance formula
DELIMITER $$

DROP FUNCTION IF EXISTS `GetDistance`$$

CREATE FUNCTION `GetDistance`(
lat1 numeric (9,6),
lon1 numeric (9,6),
lat2 numeric (9,6),
lon2 numeric (9,6)
) RETURNS decimal (10,5)
BEGIN
DECLARE x decimal (20,10);
DECLARE pi decimal (21,20);
SET pi = 3.14159265358979323846;
SET x = sin( lat1 * pi/180 ) * sin( lat2 * pi/180 ) + cos(
lat1 *pi/180 ) * cos( lat2 * pi/180 ) * cos( abs ( (lon2 * pi/180) -
(lon1 *pi/180) ) );
SET x = atan( ( sqrt( 1- power( x, 2 ) ) ) / x );
RETURN ( 1.852 * 60.0 * ((x/pi)*180) ) / 1.609344;
END $$

DELIMITER ;

我需要根据距离应用以下点

30 miles or less = 2 points
30 - 50 = 1 points
50 and up = 0 points

关于mysql 行比较游标与连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17216628/

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