Python Oracle,其中子查询中有多个列;cx“Oracle.DatabaseError:ORA-00920:无效的关系运算符”;

Python Oracle,其中子查询中有多个列;cx“Oracle.DatabaseError:ORA-00920:无效的关系运算符”;,python,sql,oracle,cx-oracle,where-in,Python,Sql,Oracle,Cx Oracle,Where In,我想使用(子查询)中的where(COLUMN1、COLUMN2、COLUMN3)从子查询中选择多个列的表中进行选择 但有一个例外 cx\u Oracle.DatabaseError:ORA-00920:无效的关系运算符就Oracle而言,没有问题。但是,查询本身没有多大意义。(在朋友们的帮助下)等于 所以我建议你改用它。就Oracle而言,没关系。但是,查询本身没有多大意义。(在朋友们的帮助下)等于 因此,我建议您改用它。此查询运行时语法正确无误:您运行它的方式或使用的工具中一定有其他内容。你

我想使用(子查询)中的where(COLUMN1、COLUMN2、COLUMN3)从子查询中选择多个列的表中进行选择

但有一个例外


cx\u Oracle.DatabaseError:ORA-00920:无效的关系运算符

就Oracle而言,没有问题。但是,查询本身没有多大意义。(在朋友们的帮助下)等于


所以我建议你改用它。

就Oracle而言,没关系。但是,查询本身没有多大意义。(在朋友们的帮助下)等于


因此,我建议您改用它。

此查询运行时语法正确无误:您运行它的方式或使用的工具中一定有其他内容。你用什么工具来运行它?@a_horse_没有名字例外是“cx_Oracle”因此,我猜测python和cx_Oracle模块,并更新了标记以反映这一点,因为答案可能围绕该模块支持的行为,而不是数据库允许的语法。此查询运行时语法正确,没有错误:您运行它的方式或您使用的工具中一定有其他内容正在使用。你用什么工具来运行它?@a_horse_,没有名称异常是“cx_Oracle”,所以我猜python和
cx_Oracle
模块已经更新了标记以反映这一点,因为答案可能是围绕该模块支持的行为,而不是数据库允许的语法。@MT0:正如我最后一句话所说,看起来很愚蠢。我不知道是否有人这样写查询。但是,我不知道cx_Oracle.DatabaseError是如何工作的。正如我(还有GMB和一匹没有名字的马,我相信还有你和其他人)所说的&知道的,就甲骨文而言,查询发布的OP是可以的。也许“cx_-Oracle”这个东西(它是什么?Python?)有自己的规则,发现这样的查询是无效的。正如我所说:我会把它作为我的第一个查询来写,它(对我)最有意义。我的第二个问题(再一次&仍然)很愚蠢,但是-也许它会让cx_Oracle“相信”它是正确的。@MT0:啊,是的-正是您作为评论发布的内容:“答案可能围绕该模块支持的行为,而不是数据库允许的语法”。我试图“旋转行为”。这查询我的返回行,其中在不同的行上可以找到order\u id、action\u sequence和detail\u sequence值。和OP想做的不一样。啊!终于找到了!谢谢,@jarlh&MT0。当然,我写的东西真的很愚蠢。将删除它。很抱歉。
如果列可以包含空值,则order\u id=314239027和ACTION\u序列不为空,DETAIL\u序列不为空。@MT0:正如我最后一句话所说,它看起来很愚蠢。我不知道是否有人这样写查询。但是,我不知道cx_Oracle.DatabaseError是如何工作的。正如我(还有GMB和一匹没有名字的马,我相信还有你和其他人)所说的&知道的,就甲骨文而言,查询发布的OP是可以的。也许“cx_-Oracle”这个东西(它是什么?Python?)有自己的规则,发现这样的查询是无效的。正如我所说:我会把它作为我的第一个查询来写,它(对我)最有意义。我的第二个问题(再一次&仍然)很愚蠢,但是-也许它会让cx_Oracle“相信”它是正确的。@MT0:啊,是的-正是您作为评论发布的内容:“答案可能围绕该模块支持的行为,而不是数据库允许的语法”。我试图“旋转行为”。这查询我的返回行,其中在不同的行上可以找到order\u id、action\u sequence和detail\u sequence值。和OP想做的不一样。啊!终于找到了!谢谢,@jarlh&MT0。当然,我写的东西真的很愚蠢。将删除它。抱歉。
如果列可以包含空值,则订单id=314239027和操作顺序不为空,详细信息顺序不为空。
    SELECT * FROM ORDER_DETAIL
    WHERE (ORDER_ID, ACTION_SEQUENCE, DETAIL_SEQUENCE)
    IN (
        SELECT ORDER_ID, ACTION_SEQUENCE, DETAIL_SEQUENCE
        FROM ORDER_DETAIL
        WHERE ORDER_ID=314239027
    );
select *
from order_detail
where order_id = 314239027
  and action_sequence is not null     -- if those columns ...
  and detail_sequence is not null     -- ... can contain nulls