Tho*_*ten 7 mysql sql sql-server oracle
在其他问题中,这个问题询问了如何从连接中删除.
我的问题:这有多少是标准的SQL?这实际上在哪些数据库上工作(最值得注意的是Oracle,MySQL和SQLServer)?
这实际上可以在Oracle中使用.FROM关键字是可选的:DELETE (query)与DELETE FROM (query).相同.
删除JOIN的规则与更新JOIN的规则相同:Oracle仅在一个表中修改行,并且只有在识别基表的行时没有歧义.例如,查看此SO或此SO.
让我们建立一个小例子:
CREATE TABLE t_parent (ID NUMBER PRIMARY KEY, NAME VARCHAR2(10));
CREATE TABLE t_child (ID NUMBER PRIMARY KEY,
parent_id NUMBER REFERENCES t_parent);
INSERT INTO t_parent VALUES (1, 'a');
INSERT INTO t_child VALUES (1, 1);
INSERT INTO t_child VALUES (2, 1);
Run Code Online (Sandbox Code Playgroud)
您可以从CHILD表中删除行:
SQL> DELETE FROM (SELECT t_child.*
2 FROM t_child
3 JOIN t_parent ON t_parent.id = t_child.parent_id
4 WHERE t_parent.name = 'a');
2 rows deleted
Run Code Online (Sandbox Code Playgroud)
DELETE ... FROM ..不属于ANSI标准,也不属于UPDATE ... FROM...。这包括任何联接语法,因为联接只能用FROM来指定。
所有供应商都以一种或另一种形式实现此目的。
| 归档时间: |
|
| 查看次数: |
2356 次 |
| 最近记录: |