选择不同的mysql结果组合

选择不同的mysql结果组合,mysql,duplicates,Mysql,Duplicates,我有一个表,列id,艺术家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

我有一个表,列id,艺术家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
当然,对于数据库来说,这些条目是不同的,但对于人类来说,它们显然是相同的,因为它们引用的是具有相同web地址的相同艺术家ID。第一排就足够了

因此,真正需要做的就是修改上面的查询,无论ID的显示顺序如何,都将显示不同的行


谢谢

在同一张桌子上加入时,我总是添加如下内容

b.artist_id < a.artist_id

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

当加入同一张表时,我总是添加类似的内容

b.artist_id < a.artist_id
这样一来,它们不仅“不一样”,还可以跳过“反向”解决方案。

尝试以下方法:

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;
选择不同的b.artist\u id作为艺人1,b.web作为web1,
a、 艺术家id为artist2,a.web为web2
来自艺术家网站a
内连接艺术家网b
在b.web=a.web和
b、 艺术家id
试试这个:

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;
选择不同的b.artist\u id作为艺人1,b.web作为web1,
a、 艺术家id为artist2,a.web为web2
来自艺术家网站a
内连接艺术家网b
在b.web=a.web和
b、 艺术家id
a
groupby
在要保持唯一的列上,我认为应该这样做。a
groupby
在要保持唯一的列上,我认为应该这样做。这似乎是一个很好的方法-奇怪的是,原始表本身只有30000个条目,但是结果表有50000个-怎么可能?可能有一些“空”结果?我不确定,但你做的部分是
b.web!='NULL'
看起来很棘手(可能是正确的,但它不检查
NULL
,而是检查字符串
“NULL”
)。这至少可以解决“反向”问题,正如我希望您看到的,您的查询、数据和/或期望可能还有另一个问题?也许一个新问题有一点值得注意,因为在注释中写出来有点棘手:)您可以忽略“NULL”和NULL,它们实际上都不存在于表中。。。我将在另一个问题中发布它。这似乎是一个很好的方法——奇怪的是,原始表本身只有30000个条目,而结果表有50000个条目——这怎么可能?可能有一些“空”结果?我不确定,但你做的部分是
b.web!='NULL'
看起来很棘手(可能是正确的,但它不检查
NULL
,而是检查字符串
“NULL”
)。这至少可以解决“反向”问题,正如我希望您看到的,您的查询、数据和/或期望可能还有另一个问题?也许一个新问题有一点值得注意,因为在注释中写出来有点棘手:)您可以忽略“NULL”和NULL,它们实际上都不存在于表中。。。我将在另一个问题中发布它。