[英]get entries by max date
我有一張這樣的桌子:
CREATE TABLE IF NOT EXISTS `answered` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`question_id` int(11) NOT NULL,
`correct` tinyint(1) NOT NULL DEFAULT '0',
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
);
和
CREATE TABLE IF NOT EXISTS `questions` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`created` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
);
我需要選擇正確和不正確答案的數量,但是:如果同一問題有多個答案(在具有相同question_id的“回答”中可能有更多條目),則只有最新的 (由“ answered.created”確定)才算在內。
結果結構應類似於:
correct count
0 1
1 3
小提琴: http ://sqlfiddle.com/#! 2/11073
我的審判:
SELECT a.correct, count(*) as count
FROM answered a
JOIN questions q ON a.question_id = q.id
GROUP BY correct
這可行,但是對相同的question_id的計數不止一次。
嘗試這個:
SELECT Correct, count(*) as count
FROM questions q
JOIN (select question_id, max(created) as 'MaxCreated' from answered group by question_id) a
ON a.question_id = q.id
JOIN answered t1 on a.question_id = t1.question_id and a.MaxCreated = t1.Created
GROUP BY correct
也許有更好的選擇(我不喜歡按日期加入,如果日期重復,該怎么辦?)但我認為它會給您您想要的(我的意思是,如果您想要最大日期,則不應該重復)日期)
我相信沒有光標就無法做到,因為您想評估每個問題是否有零個或多個答案,並且如果確實有多個答案,那么您想獲得最新的答案,這意味着您想要在每個Question_id上進行交互。
查看以下代碼: http : //dev.mysql.com/doc/refman/5.0/en/cursors.html
對於每個問題ID,您都要檢查最新答案是否正確,然后添加“正確”和“錯誤”變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.