我是靠谱客的博主 热心铅笔,最近开发中收集的这篇文章主要介绍mysql 选择不重复,SQL / mysql-选择不重复/唯一,但返回所有列?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这是一个非常好的问题。我已经在这里阅读了一些有用的答案,但是也许我可以添加更精确的解释。

只要不查询其他信息,使用GROUP BY语句减少查询结果的数量就很容易。假设您获得了下表“位置”。

--country-- --city--France Lyon

Poland Krakow

France Paris

France Marseille

Italy Milano

现在查询

SELECTcountryFROMlocationsGROUPBYcountry

将导致:

--country--France

Poland

Italy

但是,以下查询

SELECTcountry,cityFROMlocationsGROUPBYcountry

...在MS SQL中引发错误,因为您的计算机如何知道要在“法国”右侧的字段中读取的三个法国城市“里昂”,“巴黎”或“马赛”中的哪个?

为了更正第二个查询,您必须添加此信息。一种实现方法是使用函数MAX()或MIN(),在所有候选项中选择最大值或最小值。MAX()和MIN()不仅适用于数字值,而且还比较字符串值的字母顺序。

SELECTcountry,MAX(city)FROMlocationsGROUPBYcountry

将导致:

--country-- --city--France Paris

Poland Krakow

Italy Milano

要么:

SELECTcountry,MIN(city)FROMlocationsGROUPBYcountry

将导致:

--country-- --city--France Lyon

Poland Krakow

Italy Milano

只要您可以从字母(或数字)顺序的两端选择值,这些函数就是一个很好的解决方案。但是,如果不是这种情况怎么办?让我们假设您需要一个具有特定特征的值,例如以字母“ M”开头。现在事情变得复杂了。

到目前为止,我唯一能找到的解决方案是将整个查询放入一个子查询中,并手动构造它之外的其他列:

SELECTcountrylist.*,(SELECTTOP1cityFROMlocationsWHEREcountry=countrylist.countryANDcitylike'M%')FROM(SELECTcountryFROMlocationsGROUPBYcountry)countrylist

将导致:

--country-- --city--France Marseille

PolandNULLItaly Milano

最后

以上就是热心铅笔为你收集整理的mysql 选择不重复,SQL / mysql-选择不重复/唯一,但返回所有列?的全部内容,希望文章能够帮你解决mysql 选择不重复,SQL / mysql-选择不重复/唯一,但返回所有列?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部