Mysql 需要获取最后一个id的记录
我在这个结构中有一个表,但每次都需要得到每个qst_id的记录,就像这里一样,我需要得到qst_id=1的记录意味着需要得到ans_id=35,但我如何使用查询。我这样做是因为我必须更新每一次调查的电子邮件Mysql 需要获取最后一个id的记录,mysql,Mysql,我在这个结构中有一个表,但每次都需要得到每个qst_id的记录,就像这里一样,我需要得到qst_id=1的记录意味着需要得到ans_id=35,但我如何使用查询。我这样做是因为我必须更新每一次调查的电子邮件 ans_id qst_id opt 25 1 option1 26 2 option1 27 3 option2 28 4 option2 29
ans_id qst_id opt
25 1 option1
26 2 option1
27 3 option2
28 4 option2
29 5 option2
30 6 option2
31 7 option2
32 8 option2
33 9 option2
34 10 option2
35 1 option1
36 2 option1
37 3 option1
38 4 option1
39 5 option1
40 6 option1
41 7 option1
42 8 option1
43 9 option1
44 10 option1
假设
ansu id
的值将自动递增,然后使用order by
和limit
select qst_id from your_table order by ans_id desc limit 1;
在MySQL 5.x中,您可以使用表表达式,如下所示:
select t.*
from t
join (
select qst_id, max(ans_id) as max_ans_id
from t
group by qst_id
) x on x.qst_id = t.qst_id and x.max_ans_id = t.ans_id
在MySQL 8.x中,您可以使用ROW_NUMBER()
窗口函数查找每个qst_id
的最后一行,如下所示:
select ans_id, qst_id, opt
from (
select
ans_id, qst_id, opt,
row_number() over(partition by qst_id
order by ans_id desc) as rn
from t
) x
where rn = 1
请添加完整的样本输出也,它将帮助您,所以用户回答您很容易。