我有一个包含问题和答案以及sessionid的表格。
有时同一个人(sessionid)会回答同一个问题超过1次,并存储在表格中。
qapp_answer
表格内容如下所示:
Id, SessionID, QNumber, Qanswer
72 11 1 3
73 11 1 4
74 11 2 1
75 11 2 3
76 11 3 1
所以,我只希望每次Qnumber
显示一次(总共3行),基本上只是使用他们最新的答案进行显示(Qanswer
)。
这是到目前为止的代码:
select Qnumber, Qanswer
from qapp_answers
where sessionid = 11
group by QNumber, Qanswer
它返回5行。
应该很简单,但我多年没用过SQL了。
答案 0 :(得分:4)
您基本上可以使用ROW_NUMBER()
根据指定的组生成序号。下面的查询按QNumber
对记录进行分组,并按降序排列ID
生成的序号。每个组的最新ID
的值为1
,因此您需要过滤掉生成值为1
的记录。
SELECT ID, SessionID, QNumber, Qanswer
FROM
(
SELECT ID, SessionID, QNumber, Qanswer,
ROW_NUMBER() OVER (PARTITION BY QNumber ORDER BY ID Desc) rn
FROM tableName
WHERE SessionID = 11
) a
WHERE a.rn = 1