我有一个表,其中存储了用户从不同点(如startplace1到workplace 1、startplace1到workplace 2、startplace1到workplace 3、startplace2到workplace1、startplace2到workplace1)的所有距离

Every line has an 'ID', 'AID' (=memberid), 'FROM', 'TO', 'DISTANCE'

mysql - 从表中的最小值中选择值,并以-LMLPHP
仅供参考:“from”和“to”字段可能是相同的代码,但不是同一个位置(存储在另一个表中,例如dom1是home)。
我试图为每个“aid”(=memberid)选择表中的最小距离,用于每个startpoint(field from)和与距离最小的记录相关的一些其他字段
我正在使用codeigniter,这是我已经拥有的:
$this->db->SELECT('aid,from,to,min(distance) as mindistance');
$this->db->FROM('distances');
$this->db->GROUP_BY('aid');
$this->db->GROUP_BY('from');

询问
SELECT `aid`, `from`, `to`, max(distance) as maxdistance FROM (`distances`) GROUP BY `aid`

mysql - 从表中的最小值中选择值,并以-LMLPHP
这给了我最小的距离,但是字段“to”与最小距离的记录无关。我也试过按距离排序,但都一样。
mysql - 从表中的最小值中选择值,并以-LMLPHP
如何从距离最小的记录中选择字段“to”,按“aid”字段和“from”字段分组?

最佳答案

连接到子查询,该子查询查找每个辅助对象和起点的最小距离:

SELECT d1.aid, d1.`from`, d1.to, d1.distance
FROM distances d1
INNER JOIN
(
    SELECT aid, `from`, MIN(distance) as mindistance
    FROM distances
    GROUP BY aid, `from`
) d2
    ON d1.aid = d2.aid AND
       d1.`from` = d2.`from` AND
       d1.distance = d2.mindistance;

10-07 13:37
查看更多