我有一个包含列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出现的顺序如何,都会显示不同的行。
谢谢!
答案 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;