当前位置:  开发笔记 > 编程语言 > 正文

Oracle删除行匹配多个值

如何解决《Oracle删除行匹配多个值》经验,为你挑选了3个好方法。

我想做的事情如下:

DELETE FROM student WHERE
student.course, student.major IN
(SELECT schedule.course, schedule.major FROM schedule)

但是,您似乎只能在IN运算符中使用一列.真的吗?看起来像这样的查询应该是可能的.



1> Tony Andrews..:

不,你只需要括号:

DELETE FROM student WHERE
(student.course, student.major) IN
(SELECT schedule.course, schedule.major FROM schedule)



2> João Marcus..:

您还可以使用EXISTS子句:

DELETE FROM student WHERE
EXISTS
(
  SELECT 1 FROM schedule 
  WHERE schedule.course=student.course 
  AND schedule.major=student.major
)


+1; 在哪里,EXISTS是一个被低估的机制,比使用IN要好得多

3> DevelopersDe..:
DELETE FROM student WHERE
(student.course, student.major) IN
(SELECT schedule.course, schedule.major FROM schedule)

在where子句中围绕您的条款添加parens.干杯!

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有