您好我有一个sql表,其中包含以下条目。
Child_Name Attempt_Number Concept_ID IsCompleted
Class NULL C5 NULL
Function 3 C6 No
Function 4 C6 Yes
我想通过具有不同child_Name
和最大attempt_Number
的enties获得结果。预期结果是
Child_Name Attempt_Number Concept_ID IsCompleted
Class NULL C5 NULL
Function 4 C6 Yes
删除了attempt_Number
较低的函数条目。
有人可以帮忙吗?
答案 0 :(得分:1)
您需要使用max()
功能:
select * from yourTable where (child_name, attempt_number) in (
select child_name, max(attempt_number) from yourTable group by child_name)
)
说明:内部表将为每个child_name提供最大的attempt_number。既然你想要所有列而不仅仅是这两个列,你需要外部查询来获取它们
答案 1 :(得分:1)
您可以尝试使用 -
select * from
(select * from your_table order by attempt_Number DESC) tbl
group by child_name
答案 2 :(得分:1)
使用子查询查找每个孩子的最大Attempt_Number。加入该子查询:
select t1.Child_Name, t1.Attempt_Number, t1.Concept_ID, t1.IsCompleted
from tablename t1
join (select Child_Name, max(Attempt_Number) as Max_Attempt_Number
from tablename
group by Child_Name) t2
on t1.Child_Name = t2.Child_Name and t1.Attempt_Number = t2.Max_Attempt_Number
如果存在平局,则会显示两行(对于孩子,两行中的最大值相同。)