如何从 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
这是我的 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