Mysql查询选择1个不同的2个值

22 浏览
0 Comments

Mysql查询选择1个不同的2个值

我的表结构 -

用户名:网站

我想选择只有唯一的网站

我尝试运行这个查询 -

SELECT DISTINCT username,website from asd  

但是它选择了唯一的组合

示例 -

John    www.google.com 
Jack    www.google.com 
Tom     www.facebook.com 

查询应返回

John - www.google.com
Tom - www.facebook.com

谢谢

0
0 Comments

当使用DISTINCT与多个列一起使用时,它会在这些列中搜索不重复的组合。所以你得到的数据是完全正确的。

根据你的要求,请详细说明为什么需要John而不是Jack

应该选择John或Jack,因为google.com是重复的。

你如何决定是选择John还是Jack?

我猜这取决于MySQL的逻辑。我这个任务不是很重要,所以可以让MySQL来选择。但我也想知道如何决定。

0
0 Comments

Mysql查询语句中使用DISTINCT关键字的目的是为了去除查询结果中的重复数据。然而,有时候我们需要查询多个字段,并且希望其中一个字段的值不重复,而另一个字段的值可以重复。下面我们来看一下一个关于这个问题的例子。

假设我们有一个名为asd的表,该表包含了username和website两个字段。我们想要查询出不重复的website,并且同时获取对应的username。首先,我们可以尝试使用DISTINCT关键字来实现:

SELECT DISTINCT website, username FROM asd;

然而,这样的查询结果并不会达到我们的预期。实际上,DISTINCT关键字会将查询结果的每一行都视为一个整体,所以它不会去除重复的username。这样一来,我们无法实现同时获取不重复的website和对应的username。

那么,该如何解决这个问题呢?一个简单有效的解决方法是使用GROUP BY子句。通过将查询结果按照website进行分组,我们可以确保获取到的website不重复,并且可以选择其中一个对应的username。具体的查询语句如下:

SELECT username, website FROM asd GROUP BY website;

这样一来,我们就可以得到我们想要的结果了。GROUP BY子句将查询结果按照website分组,确保了我们获取到的website不重复。同时,由于我们在SELECT语句中选择了username字段,系统会自动选择每个分组中的第一个username作为结果返回。

通过这种方式,我们可以解决Mysql查询中需要同时选择多个字段,其中一个字段需要去重的问题。使用GROUP BY子句可以确保获取到不重复的字段值,并且可以选择其中一个对应的值作为结果返回。这一方法简单有效,可以满足我们的需求。

0