[英]Oracle equivalent of a SQL Server query
我需要知道等同于SQL Sever查询的Oracle。 有人可以帮我吗?
select recno = (select top 1 ld.recno from load ld where ld.crecno = i.recno)
from inputtable i
检查以下查询
select (select ld.recno from load ld where ld.crecno = i.recno AND RowNum =1)
AS recno from inputtable i
该SUBQUERY
你写的是没有必要的。 在LOAD
和INPUTTABLE
表之间进行INNER JOIN
操作是获取所需集合的快速方法。
SQL语法解释:在
LOAD
所有记录中,有多少个值为CRECNO
的记录在表INPUTTABLE
RECNO
列中具有匹配的值? 取得这些结果,如果结果按...(?)...排序,则输出中的FIRST值(TOP(1))是多少?
OP中未指定任何SORT
优先级。
在SELECT语句中,始终将ORDER BY子句与TOP子句一起使用。 这是可预测地指示哪些行受TOP影响的唯一方法。 参考来源:Microsoft Technet 。
为了说明具有正确结果的正确格式的SQL语句,我继续写了OP的SQL查询,并假设TOP(n)
解决方案想要RECNO
列值的升序排序中的第一个值。
如果缺少重要的表达式(例如ORDER BY
语句),则数据库服务器确实具有默认的排序和选择行为,但是冒充风险是假定在任何给定环境中所有默认值都设置为相同。
重写的SQL:
WITH sub_query AS (
SELECT i.recno
FROM inputtable i, load ld
WHERE i.recno = ld.crecno
ORDER BY i.recno ASC
)
SELECT s.recno
FROM sub_query s
WHERE rownum = 1
可以更改
ROWNUM
评估和ORDER BY
标准以获得预期的TOP(n)
行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.