SELECT *
FROM TableX AS o
WHERE NOT EXISTS (
SELECT *
FROM TableX AS i
WHERE i.k1 > o.k1
OR (i.k1 = o.k1 AND i.k2 > o.k2)
...
OR (i.k1 = o.k1 AND i.k2 = o.k2 AND i.k3 = o.k3 AND ... AND i.kn > o.kn)
)
;
假设K是简单的特殊情况(即非复合),上述内容缩短为:
SELECT *
FROM TableX AS o
WHERE NOT EXISTS (
SELECT *
FROM TableX AS i
WHERE i.k1 > o.k1
)
;
8条答案
按热度按时间46scxncf1#
表中没有“最后”行,因为Oracle表没有顺序的概念。
然而,假设你想找到最后插入的主键 *,并且 * 这个主键是一个递增的数字,你可以这样做:
如果你有每一行的创建日期,如果列名为
created
,这将变成:或者,您可以使用聚合查询,例如:
这里有一个小SQLFiddle来演示。
hmmo2u0o2#
bkkx9g8r3#
这是最简单的一个,不做子查询
lnvxswe24#
根据复合密钥K(k1,...,kn)上的严格全序的最后一行:
假设K是简单的特殊情况(即非复合),上述内容缩短为:
请注意,对于只返回一行的查询,键必须按顺序排列,不带连接。如果允许绑定,则此查询将返回与最大键绑定的所有行。
44u64gxh5#
你可以这样做:
或者:
5rgfhyps6#
ovfsdjhp7#
pgky5nke8#
**提示:**您必须在下面的{your_id_col_name}中使用您的id列名...