如何获取表的记录
Posted
技术标签:
【中文标题】如何获取表的记录【英文标题】:How to get records of table 【发布时间】:2021-12-23 10:43:33 【问题描述】: 如果我选择显示所有笔记,则应获取所有笔记 如果我选择获取最新的笔记,那么应该获取最新的笔记我需要合并查询;现在我对最新的和所有的笔记有两个单独的查询。
最新笔记:
select notes from activity_notes
where id=1
and date=(select max(date) from activity_notes where id=1);
所有笔记都很简单:
select notes from activity_notes where id =1;
我应该用什么来将它们与条件结合起来?我应该使用绑定变量还是 case when
或两者兼而有之?请帮我解决。
【问题讨论】:
为什么要用order by
替换的子查询?
也许可以试试select notes from activity_notes where id=1 order by date asc limit 1;
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
【参考方案1】:
在子查询中,使用 rank
分析函数,计算排名最高的 - 在您的情况下是最新的 - 注释。然后传递参数,该参数将决定您想要得到的结果。
类似这样的:
with temp as
(select notes,
rank() over (partition by id order by date_column desc) rn
from activity_notes
)
select notes
from temp
where id = :par_id
and rn = case when :par_what = 'ALL' then rn
when :par_what = 'LATEST' then 1
end;
【讨论】:
是的,只有这样的以上是关于如何获取表的记录的主要内容,如果未能解决你的问题,请参考以下文章