相关疑难解决方法(0)

显式vs隐式SQL连接

在显式vs隐式内连接中是否存在效率差异?例如:

SELECT * FROM
table a INNER JOIN table b
ON a.id = b.id;
Run Code Online (Sandbox Code Playgroud)

SELECT a.*, b.*
FROM table a, table b
WHERE a.id = b.id;
Run Code Online (Sandbox Code Playgroud)

sql join

380
推荐指数
7
解决办法
16万
查看次数

Oracle"(+)"运算符

我正在检查一些旧的SQL语句,以便记录它们并可能增强它们.

DBMS是Oracle

我不明白这样的陈述:

select ...
from a,b
where a.id=b.id(+)
Run Code Online (Sandbox Code Playgroud)

我对(+)操作员感到困惑,并且无法在任何论坛上得到它...(在引号内搜索+也不起作用).

无论如何,我使用了SQLDeveloper的"解释计划",我得到了一个输出说HASH JOIN, RIGHT OUTER,等等.

如果我(+)在查询结束时删除运算符会有什么不同吗?数据库是否必须满足某些条件((+)如有一些索引等)才可以使用?如果你能给我一个简单的理解,或者我能读到的一些好的链接,那将会非常有帮助.

谢谢!

sql oracle join outer-join

145
推荐指数
4
解决办法
21万
查看次数

Oracle:WHERE子句中`(+)`做什么?

在我们正在迁移(通用化)的基于Oracle的应用程序中找到以下内容:

SELECT
    Table1.Category1,
    Table1.Category2,
    count(*) as Total,
    count(Tab2.Stat) AS Stat
FROM Table1, Table2
WHERE (Table1.PrimaryKey = Table2.ForeignKey(+))
GROUP BY Table1.Category1, Table1.Category2
Run Code Online (Sandbox Code Playgroud)

(+)在WHERE子句中做什么?我以前从未见过这样的用法.

sql oracle operators

56
推荐指数
3
解决办法
6万
查看次数

什么类型的连接是'......其中A.ID = B.ID(+)'

我遇到过这样的代码,我需要使用ANSI标准重新编写,我想确保我保持连接正确.那么,这是什么惯例?

使用此约定的其他类型连接的语法是什么?

使用这个约定,(+) 总是在表达式的右边?

我在哪里可以了解更多相关信息?

sql oracle plsql join oracle11g

10
推荐指数
1
解决办法
2965
查看次数

SQL(+)=定义和功能

我想知道SQL中的这个语句实际上是做什么的:

select * 
from table 
where A (+)= B
Run Code Online (Sandbox Code Playgroud)

我反对:

select * 
from table 
where A = B
Run Code Online (Sandbox Code Playgroud)

并看到了差异,但不知道如何形成关于(+)=的功能的解释.在我看来,(+)=告诉它使其满足条件A = B可用,如果组件不可用则忽略/输入为"空".

此外,此语句在create view语句中运行.

提前致谢.

sql oracle outer-join

6
推荐指数
1
解决办法
434
查看次数

具有多个子查询的Linq查询

我正在努力将Oracle Sql查询转换为Linq,并且不确定如何继续.这是Sql查询:

SELECT *
FROM   CustomerShip,
    (SELECT DISTINCT b.ShipSeq AS shipSeq
     FROM   Orders a,
            CustomerShip b
     WHERE  a.OrderId IN (SELECT OrderId
                          FROM   Orders
                          WHERE  CustomerId = @CustomerId
                          AND    OrderType <> 'A')
     AND    b.CustomerId = @CustomerId
     AND    b.ShipSeq = a.CustShip
     AND    OrderStatus <> 'C'
     GROUP BY b.ShipSeq) i
WHERE  CustomerId = @CustomerId
AND    (Address NOT LIKE '%RETAIL%STORE%')
AND    ShipSeq = i.ShipSeq(+)
ORDER BY ShipTo DESC, OrderDate DESC;
Run Code Online (Sandbox Code Playgroud)

转换为linq时,我试图将其分解为三个单独的查询.

var query1 = from c in CustomerShip
            where c.CustomerId == customerId
            && !c.Address.Contains("RETAIL") …
Run Code Online (Sandbox Code Playgroud)

c# linq

4
推荐指数
1
解决办法
1524
查看次数

标签 统计

sql ×5

oracle ×4

join ×3

outer-join ×2

c# ×1

linq ×1

operators ×1

oracle11g ×1

plsql ×1