sql - 如何在 Oracle SQL 上使用内部联接删除记录?

标签 sql oracle inner-join

我有3张 table

表一:

| id_A | Data ... |

表乙:
| id_B | Data ... |

加入 A_B
| id_A | id_B |

这些表是我的情况的一个例子。好吧,我正在尝试根据许多条件从 Join A_B 中删除许多记录,例如 A 的名称是 X,B 的名称是 Y。

当我执行 SELECT 时,它可以工作,但 DELETE 则不行。

这是我的要求:
DELETE A_B FROM A 
INNER JOIN A_B 
  ON (A.ID = A_B.A_ID) 
INNER JOIN B 
  ON (B.ID = A_B.B_ID) 
WHERE B.NAME IN ('X', 'Y') 
AND A.NAME = 'Z';

它说 :
Erreur SQL : ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"

最佳答案

执行删除时只允许一个 From 表。
尝试

DELETE FROM A_B 
WHERE EXISTS (SELECT 1 FROM A 
  INNER JOIN B ON (B.ID = A_B.B_ID) 
  WHERE A.ID = A_B.A_ID
  AND B.NAME IN ('X', 'Y') 
  AND A.NAME = 'Z');

引用 here

关于sql - 如何在 Oracle SQL 上使用内部联接删除记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41285390/

相关文章:

PHP/MySQL 组合两个查询以减少循环

sql - 货币数据类型精度 - SQL Server (SSMS)

sql - 从 Oracle 游标的下一行获取数据

sql - 如何选择语句中包含字符 ' 的值

MySQL:如何执行包含计算总和的多表查询?

sql - T-SQL "Dynamic"加入

mysql - 使用 SQL 的 GROUP BY 子句时计算单个组中多个不同值的计数

sql - 用于从多个优先级队列中获取值的 SELECT 语句

mysql - 如何优化内连接

sql - mySQL SELECT join、group by 或其他