我已经尝试过搜索,但我不确定我使用的术语是否正确,但是否可以使用嵌套的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
)