ID FirstName LastName
1 John Doe
2 Bugs Bunny
3 John Johnson
我想从FirstName列中选择DISTINCT结果,但我需要相应的ID和LastName。
结果集只需要显示一个John,但是ID为1,LastName为Doe。
ID FirstName LastName
1 John Doe
2 Bugs Bunny
3 John Johnson
我想从FirstName列中选择DISTINCT结果,但我需要相应的ID和LastName。
结果集只需要显示一个John,但是ID为1,LastName为Doe。
当前回答
您可以使用组by来显示不同的值和相应的字段。
select * from tabel_name group by FirstName
现在你得到了这样的输出:
ID FirstName LastName
2 Bugs Bunny
1 John Doe
如果你想回答的话
ID FirstName LastName
1 John Doe
2 Bugs Bunny
然后使用这个查询,
select * from table_name group by FirstName order by ID
其他回答
试试这个查询
SELECT ID, FirstName, LastName FROM table GROUP BY(FirstName)
请记住,在使用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
否则,您可能不得不使用临时表。
您可以使用组by来显示不同的值和相应的字段。
select * from tabel_name group by FirstName
现在你得到了这样的输出:
ID FirstName LastName
2 Bugs Bunny
1 John Doe
如果你想回答的话
ID FirstName LastName
1 John Doe
2 Bugs Bunny
然后使用这个查询,
select * from table_name group by FirstName order by ID
如何
`SELECT
my_distinct_column,
max(col1),
max(col2),
max(col3)
...
FROM
my_table
GROUP BY
my_distinct_column`