2016-11-11 83 views
0

我有一个名为表worksheets_items类似这样的设置MySQL的选择每个群组的第一个条目PER

table "worksheet_items" 
ID DATE_ADDED COUNTY_ID NAME COMPLETED 
1  2016/03/15 11   "ZA" 0 
2  2016/03/15 12   "FB" 1 
3  2016/03/15 12   "GC" 0 
4  2016/03/15 13   "GD" 1 
5  2016/03/15 11   "EE" 1 
6  2016/03/15 13   "TF" 1 
7  2016/03/16 11   "YG" 0 
8  2016/03/16 11   "WH" 0 
9  2016/03/16 12   "YI" 1 
10 2016/03/16 13   "QJ" 0 
11 2016/03/16 13   "RK" 1 
12 2016/03/16 12   "UL" 0 
13 2016/03/16 11   "PM" 1 
所有我想要做的就是在一排

(不要紧,如果它是首先或不是)每个郡每个日期。我的目标是显示了已完成= 0

因此,在这种情况下,我想用

ID DATE_ADDED COUNTY_ID NAME COMPLETED 
1  2016/3/15  11   "ZA" 0 
3  2016/3/15  12   "GC" 0 
7  2016/3/16  11   "YG" 0 
12 2016/3/16  12   "UL" 0 
10 2016/3/16  13   "QJ" 0 

我使用GROUP BY尝试,但落得任何条目日期下的日期和每个县我在MySQL方面的专业知识是有限的,所以最终只是把错误抛出wazoo。任何帮助都将不胜感激!

+1

你不只是想要WHERE完成= 0吗? – Jeff

+0

不,不幸的是,我需要一个**每** **县**每**日期,其中完成= 0. –

回答

-1

获取一个每个日期和县的ID(例如最大值) imum ID)。然后使用找到的ID访问记录。

select * 
from worksheet_items 
where (date_added, county_id, id) in 
(
    select date_added, county_id, max(id) 
    from worksheet_items 
    where completed = 0 
    group by date_added, county_id 
) 
order by id; 
+0

完美!非常感谢! –

0

我觉得你并不需要GROUP_BY在所有

你需要的是通过DATE_ADDED订购记录和county_id

SELECT * FROM worksheet_items 
WHERE completed=0 
ORDER BY date_added, county_id