gpt4 book ai didi

MySQL从许多列中选择不同的一列

转载 作者:行者123 更新时间:2023-11-29 04:52:36 25 4
gpt4 key购买 nike

 INSERT INTO geo (city, country, latitude, longitude)
SELECT ansiname, country_code, latitude, longitude
FROM geonames2
WHERE country_code='HK';

除了 'ansiname' 列中有重复之外,以下语句工作正常。

这意味着可以有几个名称相同但纬度/经度不同的城市名称。

 HK Kowloon 25.6225     56.2225
HK Kowloon 24.80388 56.19449

有没有办法改变这个查询,让它只选择(并因此插入)每个 ansiname 的一个实例?因此删除第二个(带有 diff lat/long)。

我更新 SELECT 失败如下:

 SELECT DISTINCT(ansiname), country_code, latitude, longitude

谢谢

最佳答案

您可以使用 GROUP BY clause要做到这一点:

INSERT INTO geo (city, country, latitude, longitude)
SELECT ansiname, country_code, MAX(latitude), MAX(longitude)
FROM geonames2
WHERE country_code='HK'
GROUP BY ansiname, country_code

注意:默认情况下,如果 GROUP BY,但此设置是可配置的,并且可能因服务器而异...因此最好包含聚合函数以避免任何潜在错误。


编辑:我上面建议的方法的问题是它拆分了纬度/经度。由于您的表中有一个 ID 列,您可以为每个 ansinamecountry_code 组合选择一个 ID,然后提取结果ID:

INSERT INTO geo (city, country, latitude, longitude)
SELECT ansiname, country_code, latitude, longitude
FROM geonames2
WHERE Id IN (
SELECT MAX(Id)
FROM geonames2
WHERE country_code='HK'
GROUP BY ansiname, country_code)

关于MySQL从许多列中选择不同的一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9984317/

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