MySQL独特查询,结果放入另一个表
我在tbl1中有两个现场lat和lng。 我只想从两个字段中选择唯一的数字,并且我想将结果放在tbl2中具有相同名称lat和lng的字段中 对不起,我的错误 Tbl1是一个方形坐标网格,即网格每行的纬度坐标相同,每列的经度坐标相同。因此,结果中有尽可能多的不同经纬度坐标。示例-如果网格为100 x 100,tbl1有10000行,结果表tbl2有100行或更小的网格2 x 2:MySQL独特查询,结果放入另一个表,mysql,distinct,Mysql,Distinct,我在tbl1中有两个现场lat和lng。 我只想从两个字段中选择唯一的数字,并且我想将结果放在tbl2中具有相同名称lat和lng的字段中 对不起,我的错误 Tbl1是一个方形坐标网格,即网格每行的纬度坐标相同,每列的经度坐标相同。因此,结果中有尽可能多的不同经纬度坐标。示例-如果网格为100 x 100,tbl1有10000行,结果表tbl2有100行或更小的网格2 x 2: tbl1: lat,lng,some more fields,.. 65.123456,24.123456,.
tbl1:
lat,lng,some more fields,..
65.123456,24.123456,..
65.123456,24.123567,..
65.123567,24.123456,..
65.123567,24.123567,..
tbl2:
lat,lng
65.123456,24.123456
65.123567,24.123567
我尝试了以下方法:
insert into tbl2 (lat, lng) select distinct lat, lng from tbl1;
我不能用
.. select distinct lat from tbl1 union select distinct lng from tbl1;
因为它只返回一个字段。带有
distinct
关键字的insert select语句应该可以:
INSERT INTO tbl2
SELECT DISTINT lat, lng
FROM tbl1
我在如何吃大象的原则上找到了解决这个问题的捷径——一次吃一块——也就是说,加上两张临时桌子
create temporary table t1 (
id int not null auto_increment primary key ,
lat double(10,6) not null unique
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
create temporary table t2 (
id int not null auto_increment primary key ,
lng double(10,6) not null unique
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
insert into t1 (lat) select distinct lat from tbl1;
insert into t2 (lng) select distinct lng from tbl1;
insert into tbl2 select null as id, lat, lng from t1 cross join t2 where t1.id=t2.id;
drop table t1;
drop table t2;
也许可以在这里找到更简单、更复杂的方法?您尝试过什么?你被困在哪里?您知道如何在
SELECT
查询中使用DISTINCT
?您知道如何在INSERT
查询中使用SELECT
吗?欢迎使用堆栈溢出。在发布任何SQL问题时,从每个相关表中提供一个小样本行是很重要的。在您的情况下,请提供一个来自tbl1
的示例,以及一个来自tbl1
的示例,说明tbl2
的结果应该是什么。您还应该向我们展示您已经尝试过的任何代码,因为我们很乐意在遇到困难的地方提供帮助,但很少有贡献者愿意提供免费的编码服务。