0

我有一个包含 id、artist_id、web 列的表。我找到了一个查询,我可以使用它显示 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。第一行就足够了。

因此,真正需要的是对上面的查询进行修改,无论 id 出现的顺序如何,都将显示不同的行。

谢谢!

4

2 回答 2

2

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

b.artist_id < a.artist_id

而不是你的

b.artist_id!=a.artist_id

这样,它们不仅“不一样”,而且您也跳过了“反向”解决方案。

于 2012-08-06T09:44:51.973 回答
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;
于 2012-08-06T09:45:53.267 回答