MySQL独特查询,结果放入另一个表

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。 我只想从两个字段中选择唯一的数字,并且我想将结果放在tbl2中具有相同名称lat和lng的字段中

对不起,我的错误

Tbl1是一个方形坐标网格,即网格每行的纬度坐标相同,每列的经度坐标相同。因此,结果中有尽可能多的不同经纬度坐标。示例-如果网格为100 x 100,tbl1有10000行,结果表tbl2有100行或更小的网格2 x 2:

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
的结果应该是什么。您还应该向我们展示您已经尝试过的任何代码,因为我们很乐意在遇到困难的地方提供帮助,但很少有贡献者愿意提供免费的编码服务。