如何从表中选择不同的值

时间:2016-01-19 05:46:02

标签: mysql sql

您好我有一个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较低的函数条目。

有人可以帮忙吗?

3 个答案:

答案 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

如果存在平局,则会显示两行(对于孩子,两行中的最大值相同。)