我怎么会做这种事?
SQL SELECT row FROM table WHERE id=max(id)
您可以使用一个子选项:
SELECT row FROM table WHERE id=( SELECT max(id) FROM table )
注意,如果 max(id)的值不唯一,则返回多行。
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的最大值,而您只能得到一行。
id
您不能给出 order by,因为 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 ()中进行选择。