2011-04-08 66 views
0

任何意见将是巨大的:Mysql的分查询

我运行MIN()查询在那里我有同样的地位账号和两个不同的时间戳

例如:

SELECT 
    DATE(`created_at`) as date, 
    account_id, 
    changed_by_id, 
    status 
FROM statuses 
WHERE `changed_to` = 'entered' 
AND account_id = 49794; 

结果:

date   account_id changed_by_id status 
2011-04-05 49794  17    entered 
2011-03-16 49794  18    entered 

当我尝试提取min(DATE(created_at))GROUP By account_id我没有得到正确的changed_by_idaccount_iddate

谁能指教一下,我需要通过查询获取匹配datechanged_by_id办?

感谢

+0

这是一个典型的groupwise max查询。 – Devart 2011-04-08 15:58:46

回答

0

未经测试,但它的日期与此类似

select 
t1.DATE(`created_at`) as date, 
t1.account_id, 
t1.changed_by_id, 
t1.status 
from statuses t1 
where (date(created_at) = (select min(date(created_at)) 
       from statuses t2 
       where t1.account_id=t2.account_id)) 
and t1.account_id = 49794; 
0

订购的东西,并且只选择第一行:

 
SELECT 
    DATE(`created_at`) as date, 
    account_id, 
    changed_by_id, 
    status 
FROM statuses 
WHERE `changed_to` = 'entered' 
AND account_id = 49794 
ORDER BY 1 
LIMIT 1; 

这可能不是最优雅选项,但它的理解和效率都很明显。