查询不同的id对

时间:2014-06-10 20:50:04

标签: mysql sql unique

此查询成功地为表籍taxi_lines中的行提取了一对ID,其中一个驱动程序出现了多个打开的分配(例如,同时在2个出租车中)。

我的问题是它在两个命令中拉出每对id(例如500和509,然后是509和500)。

data

我尝试添加DISTINCT(CONCAT(tl1.id,tl2.id)),GROUP BY id1, id2,但这些并没有实现唯一配对。

以下是获取上述数据的工作查询。如何改进以获得独特的对?

SELECT tl1.id AS id1, tl2.id AS id2
FROM taxi_lines tl1
JOIN taxi_lines tl2 ON tl1.driver = tl2.driver
AND tl1.id != tl2.id
AND tl1.driver > 0
WHERE tl1.end =  '0000-00-00 00:00:00'
AND   tl2.end =  '0000-00-00 00:00:00'

3 个答案:

答案 0 :(得分:2)

AND tl1.id != tl2.id替换为AND tl1.id > tl2.id

答案 1 :(得分:1)

尝试一些简单的事情:

AND t11.id > tl2.id

这将只返回第一个id大于第二个id的行。它会消除你一半的行。

答案 2 :(得分:0)

这有什么影响

SELECT distinct 
      case when tl1.id < tl2.id then tl1.id else tl2.id  end as id1,
      case when tl1.id < tl2.id then tl2.id else tl1.id  end as id2

FROM taxi_lines tl1
JOIN taxi_lines tl2 ON tl1.driver = tl2.driver
AND tl1.id != tl2.id
AND tl1.driver > 0
WHERE tl1.end =  '0000-00-00 00:00:00'
AND   tl2.end =  '0000-00-00 00:00:00'