按查询过滤数据

时间:2017-09-10 10:38:29

标签: mysql

我的MySQL查询如下:

select * from messages
where id in (select max(id) from messages group by Name)

为什么此查询不起作用?:

select * from messages
where id in (select max(id) from messages where field <> 'value' group by Name)

1 个答案:

答案 0 :(得分:0)

通过“不工作”来了解您的意思会很有帮助 - 例如,您是否收到错误或是否会产生意外结果。但是,根据您的评论,并假设您按每个用户的最大ID定义“最后项目销售额”,我建议JOIN将您的表格添加到选择每个用户的最大ID的子查询中。例如,给定评论中提到的样本销售数据集,您可以编写如下查询:

select s.*  
from sales s 
join (
   select user_name, max(id) as max_id
   from sales 
   where sale_item <> 'Ship'
   group by user_name
) q 
on q.user_name = s.user_name
and q.max_id = s.id 

我创建了一个SQL Fiddle来演示查询的输出。