Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果TableB.Number=27,则不包括任何TableA.ID_Sql_Oracle_Oracle11g_Where Clause - Fatal编程技术网

Sql 如果TableB.Number=27,则不包括任何TableA.ID

Sql 如果TableB.Number=27,则不包括任何TableA.ID,sql,oracle,oracle11g,where-clause,Sql,Oracle,Oracle11g,Where Clause,我有两张桌子 TableA Table2 ------ ------- ID Number ID是父项,这意味着每个TableA.ID可以有多个Number 范例 TableA.ID Table2.Number --------- ------------- 123456 27 123456 13 123456 1 123456 11

我有两张桌子

TableA         Table2
------         -------
ID             Number
ID是父项,这意味着每个TableA.ID可以有多个
Number

范例

TableA.ID     Table2.Number
---------     -------------
 123456           27
 123456           13
 123456            1
 123456           111
 222222            32
 222222            93
 333333            27
 333333            44
 443333            27
 443334            66
 443334            22
 443336            27
如果数字为27,则不查询任何ID

输出应为

TableA.ID     Table2.Number
---------     -------------
 222222            32
 222222            93
 443334            66
 443334            22

谢谢

您可以用一个简单的
来完成,如下所示:

SELECT
    a.ID, b.Number
FROM
    TableA a
JOIN TableB b ON a.ID=b.ID
WHERE NOT EXISTS (
    SELECT * FROM TableB x WHERE x.ID=a.ID AND x.Number=27
)
EXISTS
语句有一个子查询,再次引用
TableB
。请注意,它使用了不同的别名(即,
x
而不是
b
)。

尝试类似的方法(假设table2有一个带有tableA.id的列)


这些桌子是怎样装订的?他们之间有什么关系吗?对不起,他们之间的共同点是
TableA.ID=TableB.ID
对不起,但它仍然告诉我,ID与
27
BWS的答案有效,因为他在内部/子查询中也有连接。@user206168 BWS的查询有一个连接,因为它需要带
a.ID
。此查询没有联接,因为它不是必需的。我确信这与从这个骨架查询转换为真实查询有关:这种方法应该工作得非常好。@user206168…而且它工作得非常好-。我不知道为什么它不工作。我不认为我在转换为真正的查询时犯了错误。我仔细检查了一下。
select tablea.id,table2.number
from tablea join table2 on tablea.id = table2.a_id
where tablea.id NOT IN 
    (select tablea.id from tablea join table2 on tablea.id = table2.a_id
     Where table2.Number = 27)
order by tablea.id,table2.Number