这是mysql表中的一些示例数据
a b distance 15 44 250 94 31 250 30 41 250 6 1 250 95 18 250 72 84 500 14 23 500 55 24 500 95 8 500 59 25 500 40 73 500 65 85 500 32 50 500 31 39 500 22 25 500 37 11 750 98 39 750 15 57 750 9 22 750 14 44 750 69 22 750 62 50 750 89 35 750 67 65 750 74 37 750 52 36 750 66 53 750 82 74 1000 79 22 1000 98 41 1000
我如何查询该表,以便每选择一个距离就能得到2行?
成功的查询将产生类似
a b distance 30 41 250 95 18 250 59 25 500 65 85 500 15 57 750 89 35 750 79 22 1000 98 41 1000
使用:
SELECT x.a, x.b, x.distance FROM (SELECT t.a, t.b, t.distance CASE WHEN @distance != t.distance THEN @rownum := 1 ELSE @rownum := @rownum + 1 END AS rank, @distance := t.distance FROM TABLE t JOIN (SELECT @rownum := 0, @distance := '') r ORDER BY t.distance --important for resetting the rownum variable) x WHERE x.rank <= 2 ORDER BY x.distance, x.a