Ian*_*hen 22 sql oracle distinct
给出一个人的表A,他们的母语,以及其他列C3 ... C10代表...
PERSON LANGUAGE ... bob english john english vlad russian olga russian jose spanish
如何构造一个查询,为每种不同的语言选择一行的所有列?
PERSON LANGUAGE ... bob english vlad russian jose spanish
对我来说,每种不同语言的哪一行都能产生结果并不重要.在上面的结果中,我选择了每种语言的最低行数.
小智 39
Eric Petroelje几乎是正确的:
SELECT * FROM TableA
WHERE ROWID IN ( SELECT MAX(ROWID) FROM TableA GROUP BY Language )
Run Code Online (Sandbox Code Playgroud)
注意:使用ROWID(行唯一ID),而不是ROWNUM(它给出结果集中的行号)
Jef*_*emp 11
这将更有效,而且您可以控制它用于选择值的顺序:
SELECT DISTINCT
FIRST_VALUE(person)
OVER(PARTITION BY language
ORDER BY person)
,language
FROM tableA;
Run Code Online (Sandbox Code Playgroud)
如果您真的不关心为每种语言挑选哪个人,您可以省略ORDER BY子句:
SELECT DISTINCT
FIRST_VALUE(person)
OVER(PARTITION BY language)
,language
FROM tableA;
Run Code Online (Sandbox Code Playgroud)
我的Oracle有点生疏,但我认为这样可行:
SELECT * FROM TableA
WHERE ROWID IN ( SELECT MAX(ROWID) FROM TableA GROUP BY Language )
Run Code Online (Sandbox Code Playgroud)