如何获取表的记录

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;

【讨论】:

是的,只有这样的

以上是关于如何获取表的记录的主要内容,如果未能解决你的问题,请参考以下文章

如何获取实体/表的名称和添加审计的记录号?

如何获取自引用表的每条记录的所有子项

如何在没有连接表的情况下获取多条记录[关闭]

如何在 ASP.NET Core API 控制器中获取多个表的记录

如何获取另一个表中不存在的表的记录?

如何从一个表中获取包含另一表的详细信息的记录计数