返回具有相同值的最大行数的值

时间:2014-05-19 06:27:33

标签: mysql sql

我有table_schedule(id,instructorNumber,time,date,cpNumber,user_id);

是否可以以相同的值输出具有相同最高值的instructorNumber,time等的值?

抱歉,我是sql的新手,所以我希望有人可以帮我查询

2 个答案:

答案 0 :(得分:1)

只需按照您需要的所有字段进行分组"相同的值比较",按计数desc排序(所以最常出现的结果将是第一个),然后先取。

select 
instructorNumber, time, date, cpNumber
from table_schedule
group by instructorNumber, time, date, cpNumber
order by count(*) desc
LIMIT 1

如果您想要多个结果,可以将其用作主查询的连接。

答案 1 :(得分:0)

首先按要比较的值和计数值进行分组。获取最大计数(在MySQL中,您可以使用LIMIT)。然后再次执行相同的group-by查询,并仅获取具有最大计数的结果。使用GROUP_CONCAT获取字符串中的ID列表。

select instructorNumber, time, date, cpNumber, user_id, group_concat(id) as ids
from table_schedule
group by instructorNumber, time, date, cpNumber, user_id
having count(*) =
(
  select count(*)
  from table_schedule
  group by instructorNumber, time, date, cpNumber, user_id
  order by count(*) desc limit 1
);