mysql表连接自己本身_mysql连接表本身

我遇到了这个问题,我希望它是可能的.

我有一个来自wordpress的表,用于存储后元数据,因此无法更改列和字段数据(轻松).

因此,表结构

POST_ID

meta_key

meta_value

元键存储字段名称和meta_value,即该字段的值.

我需要根据帖子ID对这些进行分组,这样我就可以在两个字段之间进行比较.我尝试过各种各样的!!

所以数据如下:

post_id meta_key meta_value

1 _wp_field0 10

1 _wp_field1 5

1 _wp_field2 9

1 _wp_field3 "matt's post"

1 _wp_field3 155

2 _wp_field0 51

2 _wp_field1 9

2 _wp_field2 18

2 _wp_field3 "james' post"

2 _wp_field3 199

我做了一个返回的GROUP_CONCAT

post_id concat

1 10,5,9,matt's post,155

2 51,9,18,James' post,199

这是我最接近我想要的东西.但我不知道如何将其拆分.我有一系列我要比较的整数(字段1和2).

我需要上面字符串中的第二个和第三个数字.我可以在SQL中做些什么来获取这些吗?然后我想对它做一些数学运算.它们基本上是漂浮物,存储经度和纬度,我想比较和获得距离….

我在考虑拥有临时表?我只需要引用这两个数字.

也许我可以通过分隔符拆分字符串?

我已经没想完了. (ps)我也尝试编写自己的函数(如下所示),但这次服务器崩溃了几次!!

DROP FUNCTION get_lat;

DELIMITER $$

CREATE FUNCTION get_lat(in_post_id INT)

RETURNS FLOAT

READS SQL DATA

BEGIN

DECLARE latitude FLOAT;

SELECT meta_value INTO latitude FROM wp_postmeta WHERE post_id = in_post_id AND meta_key = 'field1';

RETURN (latitude);

END $$

DELIMITER;

DROP FUNCTION get_lon;

DELIMITER $$

CREATE FUNCTION get_lon(in_post_id INT)

RETURNS FLOAT

READS SQL DATA

BEGIN

DECLARE longitude FLOAT;

SELECT meta_value INTO longitude FROM wp_postmeta WHERE post_id = in_post_id AND meta_key = 'field2';

RETURN (longitude);

END $$

DELIMITER;

SELECT post_id,get_lat(post_id)as latitude, get_lon(post_id) as longitude FROM wp_postmeta GROUP BY post_id;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值