我该怎么做?
SQL SELECT row FROM table WHERE id=max(id)
答案 0 :(得分:207)
您可以使用子选择:
SELECT row
FROM table
WHERE id=(
SELECT max(id) FROM table
)
请注意,如果max(id)
的值不唯一,则返回多行。
如果您只想要一个这样的行,请使用@MichaelMior的答案,
SELECT row from table ORDER BY id DESC LIMIT 1
答案 1 :(得分:135)
您也可以
SELECT row FROM table ORDER BY id DESC LIMIT 1;
这将按行ID按降序对行进行排序,并返回第一行。这与返回具有最大ID的行相同。这当然假设id
在所有行中都是唯一的。否则,可能会有多行具有id
的最大值,您只能获得一个。
答案 2 :(得分:24)
SELECT *
FROM table
WHERE id = (SELECT MAX(id) FROM TABLE)
答案 3 :(得分:17)
您无法提供order by
,因为order by
执行了全面扫描"在桌子上。
以下查询更好:
SELECT * FROM table WHERE id = (SELECT MAX(id) FROM table);
答案 4 :(得分:0)
试试这个
SELECT top 1 id, Col2, row_number() over (order by id desc) FROM Table
答案 5 :(得分:0)
一个人总是可以使用分析功能,这将给您更多的控制权
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()或density_rank()中进行选择。
答案 6 :(得分:-2)
您也可以使用COUNT(id)代替MAX(id)
SELECT * FROM table WHERE id = (SELECT count(id) FROM table)