Sql或运算符

时间:2015-10-18 21:15:01

标签: sql operator-keyword

我有一些我不明白的东西。 如果我的表是这样的:

select * from usernames
where age < 20 or name not like 'din'

我做了这个查询:

{{1}}

所有的表格和行都打印出来,我的目标是打印那些不被称为'din'并且未满20岁的人。

有人能告诉我我的错误在哪里吗?

我在这里问了另一个问题......抱歉。

1 个答案:

答案 0 :(得分:4)

说明:

where age < 20 or name not like 'din'

分解为:

where <something> or <something else>

对于每一行,&lt;的东西&gt;和&lt;别的&gt;将被评估。 or表示如果两者都为真,则结果为真。对于要选择的行,只需要其中一个为真。

在您的示例中,第一行符合age < 20条件。测试的其余部分并不重要(并且评估为假)因为我们已经有了一个真实的。对于age < 20,第二行的计算结果为false,但对于name not like 'din',结果为true,如上所述,如果OR的任一侧为真,则结果为true,因此在结果中返回第2行。

这就是返回两行的原因。

将此数据添加到您的表格中以帮助说明:

name   age 
----   ----
din     28  (both sides false)
mari    15  (both sides true)