如何选择表中 ID 最大的整行?

我怎么会做这种事?

SQL SELECT row FROM table WHERE id=max(id)
551831 次浏览

您可以使用一个子选项:

SELECT row
FROM table
WHERE id=(
SELECT max(id) FROM table
)

注意,如果 max(id)的值不唯一,则返回多行。

如果你只想要这样一行,使用@MichaelMior 的回答,

SELECT row from table ORDER BY id DESC LIMIT 1
SELECT *
FROM table
WHERE id = (SELECT MAX(id) FROM TABLE)

你也可以

SELECT row FROM table ORDER BY id DESC LIMIT 1;

这将按照 ID 对行进行降序排序,并返回第一行。这与返回具有最大 ID 的行相同。当然,这是假设 id在所有行中是唯一的。否则,可能会有多行具有 id的最大值,而您只能得到一行。

您不能给出 order by,因为 order by对表进行“全面扫描”。

以下查询更好:

SELECT * FROM table WHERE id = (SELECT MAX(id) FROM table);

试试这个

 SELECT top 1  id, Col2,  row_number() over (order by id desc)  FROM Table

人们总是可以选择分析函数,这样可以给你更多的控制

select tmp.row from ( select row, rank() over(partition by id order by id desc ) as rnk from table) tmp where tmp.rnk=1

如果根据数据的类型面临 rank ()函数的问题,那么也可以从 row _ number ()或 dense _ rank ()中进行选择。