如何从 SQL 数据中只显示一条记录,是使用 select top 1 的最佳方法吗?

how to show only one record that you want from SQL data, is the best way to use select top 1?

这是我的 sql 查询,

select emailid,
       emailsentime


from [dbo].[clientbase]

where emailsent time > '1995-01-02'
and   emailsent time < '1995-01-03'

order by emailsenttime desc

但是它正在提取该日期的所有电子邮件 ID,我只想显示记录的第一行(因为那是该日期发送的最新电子邮件 ID。

我想试验一下,因为目前我是按降序进行的,如果我是按升序进行的(这将是最近的一次)。

但是如何在不拉取所有数据的情况下只获取最高记录

我的意思是我运行这个查询,它显示这样的数据

emailid          emailsenttime

1986789          1995-01-02 22:51:12
1986788          1995-01-02 22:50:12
1986787          1995-01-02 22:49:12
1986786          1995-01-02 22:48:12

您需要 row-limiting 查询。

在标准 SQL 中,你会去:

select ...
from ...
where ...
order by emailsenttime desc
fetch first 1 row only

也就是说,语法可能因您的数据库而异,例如:

  • MySQL, Postgres:

    select ...
    from ...
    where ...
    order by emailsenttime desc
    limit 1
    
  • 旧版本 SQL 服务器:

    select top (1) ...
    from ...
    where ...
    order by emailsenttime desc