mysql – 过滤重复组合多个列
示例表
| name | year | latitude | longitude |
|--------------|------|----------|-----------|
| Cleveland | 1800 | 10 | 11 |
| Cleveland | 1810 | 10 | 11 |
| Medina | 1811 | 12 | 13 |
| Dayton | 1812 | 14 | 15 |
| Sandusky | 1105 | 50 | 50 |
| Mount Vernon | 1813 | 50 | 50 |
我的目标是什么
我想选择纬度和经度的每个独特组合.所以我想过滤掉任何重复的对.我还需要过滤掉年份小于1500的任何记录.
这是我想要实现的子集:
| name | year | latitude | longitude |
|--------------|------|----------|-----------|
| Cleveland | 1800 | 10 | 11 |
| Medina | 1811 | 12 | 13 |
| Dayton | 1812 | 14 | 15 |
| Mount Vernon | 1813 | 50 | 50 |
每个记录年份大于1500,并且没有任何重复的纬度,长对.
我试过的
我试图找到一种方法来使用DISTINCT.我发现的任何东西都没有用.
我也尝试过使用GROUP BY:
SELECT *
FROM users
GROUP BY latitude, longitude
HAVING year > 1500;
上述查询的问题是消除了包含lat,long对50,50的以下两个记录:
| name | year | latitude | longitude |
|--------------|------|----------|-----------|
| Sandusky | 1105 | 50 | 50 |
| Mount Vernon | 1813 | 50 | 50 |
由于桑达斯基的年份不到1500年,该团体被淘汰了.我不想要桑达斯基的记录,但我确实想要弗农山.
我注意到,如果这两个记录切换如此:
| name | year | latitude | longitude |
|--------------|------|----------|-----------|
| Mount Vernon | 1813 | 50 | 50 |
| Sandusky | 1105 | 50 | 50 |
……然后该组织的年份设定为1813年,该组织未被淘汰.我想也许按年分类会解决它,但它没有:
SELECT *
FROM users
GROUP BY latitude, longitude
HAVING year > 1500
ORDER BY year DESC;
我正在尝试的是什么?