我试图从根本上解决这个问题;我希望我仍然能够在原始查询中捕捉到我想要实现的本质!
- 可以在此处找到生成表和数据的代码。
- SQL 风格是Microsoft SQL Server 2000(尽管我一直在 MySQL 上运行这个精简的测试用例)
原表
+-----------+----------+----------+
| master_id | slave_id | distance |
+-----------+----------+----------+
| 1 | 1 | 0.1 |
| 1 | 3 | 10 |
| 2 | 2 | 3 |
| 3 | 2 | 2 |
+-----------+----------+----------+
所需内容的描述
我想选择没有重复的slave_id
master_id
对或。MIN(distance)
master_id
slave_id
期望结果表
+-----------+----------+----------+
| master_id | slave_id | distance |
+-----------+----------+----------+
| 1 | 1 | 0.1 |
| 3 | 2 | 2 |
+-----------+----------+----------+
我的尝试
SELECT
join_table.master_id,
join_table.slave_id,
join_table.distance
FROM join_table
INNER JOIN
(
SELECT
slave_id,
MIN(distance) AS distance
FROM join_table
GROUP BY slave_id
) AS self_join
ON self_join.slave_id = join_table.slave_id
AND self_join.distance = join_table.distance
我的尝试有什么问题
此查询产生重复的master_id
任何帮助将不胜感激。