MySQL:如果我只想通过distinct选择1个字段怎么办?

时间:2010-12-27 04:46:06

标签: mysql

这是我的SQL: SELECT Persons, Color, Race, Game FROM table

所以我想选择唯一的Persons,所以我会这样做: SELECT DISTINCT Persons FROM table

问题在于,它没有选择其余部分。如何通过distinct选择Persons并正常选择其余部分(如果可能,在1 sql命令中)?

2 个答案:

答案 0 :(得分:4)

mysql让你这样做:

select Persons, Color, Race, Game FROM table GROUP BY Persons

您将从具有给定人员的任意一条记录中获取颜色,种族和游戏。

如果你想要,例如对于给定人员的所有颜色值,您需要执行以下操作:

select Persons, GROUP_CONCAT(DISTINCT Color), ...

这将返回逗号(或您请求的其他分隔符)每个人的不同颜色值的分隔列表。可以施加最大长度;可以通过服务器配置变量进行更改。

答案 1 :(得分:4)

如果您想使用标准SQL,请考虑使用:

SELECT Person, MAX(Color) AS Color, MAX(Race) AS Race, MAX(Game) AS Game
  FROM table
 GROUP BY Person;

这是ysth提供的答案的半平凡变体,但它可以与除MySQL之外的DBMS一起使用。您为Color,Race,Game获得的值是确定的,但显示的值不一定都来自同一记录(如果给定的Person在表中有多个记录)。

显然,如果你希望Color,Race和Game值显示来自表格的一行,你必须更努力地工作(很多)。除此之外,你已经设计了一个标准来选择你想要选择的行。