0
我有三个表格 - p,m和i。 M是p和i的连接表,并且具有距离属性以确定我距离p有多远。我想要做的就是为每个p选择我所有的p,如果它还没有被选为前一个p。既然你不能只为一列调用select distinct,我对于我能做的事情有些困惑。现在我的查询如下(希望仍然很容易跟着我试图让它有点含糊):只有在尚未选择连接的连接表时才进行选择
select p.id, p.name, m.distance, i.id from p join m on p.id=m.p_id join i on m.i_id=i.id where m.distance <= 30 order by p.name;
基本上,我只希望我相关联的p如果它不是更接近另一P(这将由m.distance确定)。有很多我的项目超过30,我根本不需要这些。
现在一直在我的头上反抗了一个小时。我非常感谢一些见解。
谢谢。我只是想通了,来到这里检查我是否准确,并得到了相同的答案。我还选择min(distance)作为我的外部查询的距离,以确保mysql在多个时选择最接近的i。从我阅读的内容来看,当你使用一个组时,它有时可以随机选择一个,我想确保它没有。也许我错了,这是对SQL的浪费,但它解决了我的问题。感谢您的答复。 – Skyline969