这是我的SQL:
SELECT Persons, Color, Race, Game FROM table
所以我想选择唯一的Persons
,所以我会这样做:
SELECT DISTINCT Persons FROM table
问题在于,它没有选择其余部分。如何通过distinct选择Persons
并正常选择其余部分(如果可能,在1 sql命令中)?
答案 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值显示来自表格的一行,你必须更努力地工作(很多)。除此之外,你已经设计了一个标准来选择你想要选择的行。