ID   FirstName   LastName
1      John        Doe
2      Bugs        Bunny
3      John        Johnson

我想从FirstName列中选择DISTINCT结果,但我需要相应的ID和LastName。

结果集只需要显示一个John,但是ID为1,LastName为Doe。


当前回答

请记住,在使用by和order by组时,MySQL是唯一允许在组中按和/或按块排序的数据库,这些列不是select语句的一部分。

例如: 选择column1 从表 按列2分组 按列3排序

这将不会飞在其他数据库,如Postgres, Oracle, MSSQL等。您必须在这些数据库中执行以下操作

选择columnn1、column2、column3 从表 按列2分组 按列3排序

只是一些信息,以防您曾经将当前的代码迁移到另一个数据库或开始在另一个数据库中工作,并尝试重用代码。

其他回答

不确定是否可以用MySQL做到这一点,但你可以在T-SQL中使用CTE

; WITH tmpPeople AS (
 SELECT 
   DISTINCT(FirstName),
   MIN(Id)      
 FROM People
)
SELECT
 tP.Id,
 tP.FirstName,
 P.LastName
FROM tmpPeople tP
JOIN People P ON tP.Id = P.Id

否则,您可能不得不使用临时表。

试试这个查询

 SELECT ID, FirstName, LastName FROM table GROUP BY(FirstName)

如何

`SELECT 
    my_distinct_column,
    max(col1),
    max(col2),
    max(col3)
    ...
 FROM
    my_table 
 GROUP BY 
    my_distinct_column`

DISTINCT关键字并没有按照您期望的方式工作。当你使用SELECT DISTINCT col1, col2, col3时,你实际上选择了所有唯一的{col1, col2, col3}元组。

SELECT ID,LastName 
From TABLE_NAME 
GROUP BY FirstName 
HAVING COUNT(*) >=1