簡體   English   中英

通過最大日期獲取條目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM