sql - 解释 Oracle SQL 的语法 where ('a' ,'b' ) in ( ('x' , 'y' ))

标签 sql oracle oracle12c

在 Oracle SQL 中,不接受此语法,返回ORA-00920:无效的关系运算符

  select name
      from employees
     where (emp_id, dept_id) in (1 , 100)
        or (emp_id, dept_id) in (2, 200)
     order by emp_id;

虽然这个语法看起来完全有效(注意双括号)

 select name
  from employees
 where (emp_id, dept_id) in ((1 , 100))
    or (emp_id, dept_id) in ((2, 200))
 order by emp_id;

您能解释一下原因吗?我在 Oracle 文档中没有找到任何对此语法的引用。

最佳答案

我想你想要:

select name
from employees
where (emp_id, dept_id) in ((1, 100), (2, 200))
order by emp_id;

问题是您正在比较元组。元组需要用自己的括号括起来。

关于sql - 解释 Oracle SQL 的语法 where ('a' ,'b' ) in ( ('x' , 'y' )),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45292968/

相关文章:

java - 如何获取和查看从HDFS到本地系统的Oracle BLOB(图像)数据?

oracle - ORA-01741 用于带有不可见字段和隐式约束的 DBMS_REDEFINITION

database - 为什么 Oracle 不在 DBA_dependencies 中包含使用任何数据库链接创建的对象 View ?

mySQL - 根据第一行中的计数组合行结果?

javascript - 如何使用 sequelize 和 node 插入由多个对象组成的数组?

mysql - 40秒奇怪的sql性能谜题

sql - 查询以返回与电影租赁数据库中观看次数最多的导演配对的用户

c# - OracleDataAdapter,Fill 方法挂起,如何处理连接终止/断开/切断?

oracle - 在 Oracle SQL Developer 3.2 中使用变量

java - 通过ojdbc连接到oracle数据库12c时的用户名和密码问题