我需要从我的 C# 代码创建对 Oracle 数据库的请求,以便为网站上的页面选择行。例如,我想要获取第二页的 100 到 200 行。 我找到了一些真正有效的代码
SELECT * FROM
(
SELECT a.*, rownum r__
FROM
(
SELECT * FROM ORDERS WHERE CustomerID LIKE 'A%'
ORDER BY OrderDate DESC, ShippingDate DESC
) a
WHERE rownum < ((pageNumber * pageSize) + 1 )
)
WHERE r__ >= (((pageNumber-1) * pageSize) + 1)
它有效,我可以在更改包装内的此块时使用它
SELECT * FROM ORDERS WHERE CustomerID LIKE 'A%'
ORDER BY OrderDate DESC, ShippingDate DESC
但它是如何运作的呢?我无法理解。我熟悉 SQL 请求,但什么是
SELECT a.*, rownum r__
什么是
) a
FROM 换行后?
你能帮我解释一下这个包装吗?
select a.*, rownum ->选择表/表别名 a 中的所有记录以及行号,这样您就可以选择一个子集。
(从客户 ID 类似于“A%”的订单中选择 * 订购依据 订单日期 DESC、发货日期 DESC) a
创建“a”作为表别名,允许您将其视为外部选择表中的表。
请注意, select * 被认为是不好的做法,因为对表结构的更改可能会破坏您的代码。