选择不同的mysql结果组合

时间:2012-08-06 09:43:10

标签: mysql duplicates

我有一个包含列id,artist_id,web的表。我找到了一个查询,我可以用它来显示网页副本:

SELECT DISTINCT b.artist_id AS artist1, b.web AS web1, a.artist_id AS artist2, a.web AS web2 FROM artist_webs a INNER JOIN artist_webs b ON b.web=a.web AND b.web!='NULL' AND b.artist_id!=a.artist_id

因此,它显示具有相同网址的不同艺术家。但唯一的问题是它显示两次或更多次基本相同的条目。例如,结果可能如下:

Row 1
artist1: 21399
artist2: 1036

Row 2
artist1: 1036
artist2: 21399

当然,对于数据库来说,这些是不同的条目,但对于人类来说,它们与引用具有相同网址的相同艺术家ID是相同的是显而易见的。第一行就足够了。

因此,所有真正需要的是修改上面的查询,无论ids出现的顺序如何,都会显示不同的行。

谢谢!

2 个答案:

答案 0 :(得分:2)

当加入同一张桌子时,我总是添加类似

的内容
b.artist_id < a.artist_id

代替你的

b.artist_id!=a.artist_id

这样他们不仅“不一样”,而且你也跳过“反向”溶解。

答案 1 :(得分:1)

试试这个:

SELECT DISTINCT b.artist_id AS artist1, b.web AS web1, 
                a.artist_id AS artist2, a.web AS web2 
FROM artist_webs a 
     INNER JOIN artist_webs b 
         ON b.web = a.web AND  
            b.artist_id < a.artist_id;