有可能在oraclesql中嵌套where和and子句吗



我已经尝试过搜索,但我不确定我使用的术语是否正确,但是否可以使用嵌套的WHERE and子句?:

select id from tabel_1 where first_name = 'Jay' and last_name = 'McDonald' and (age = 18 and hair_colour = black)

因此嵌套的AND将">和(年龄!=18和hair_color!=black(";所以你可以有:

first_name='Jay'评估为真正的

last_name="McDonald"评估为真实

(年龄=18,头发颜色=黑色(只有当年龄和头发颜色都是真时,才会评估为真

只有同时具有18和黑色的id才被排除在外,而不是仅具有黑色或仅具有18 的id

(年龄=18,hair_color=黑色(只有在年龄和hair_color均为真时才评估为真

这种情况已经发生了。你甚至不需要括号。

只有同时具有18和黑色的ID被排除,但不包括仅具有黑色或仅具有18 的ID

你想要更像这样的东西:

AND NOT (age = 18 and hair_colour = 'black')

但你也应该看看德摩根定律,它允许我们这样重写它:

AND (age != 18 OR hair_colour != 'black')

但假设你也希望其中一个是真的:也就是说,我们想要一个异或(XOR(:

AND (age  = 18 OR hair_colour  = 'black')
AND (age != 18 OR hair_colour != 'black')
select id 
from tabel_1 
where first_name = 'Jay' 
and last_name = 'McDonald' 
and (
age = 18 OR 
hair_colour = black
)

相关内容

  • 没有找到相关文章

最新更新