不等式运算符给出的结果与 OR 结果不同,尽管我从逻辑上认为它应该是相同的

问题描述 投票:0回答:1

我一直在解决哈佛大学 CS50 for SQL 在线课程中的问题集 0。里面有一个问题,上面写着:

在7.sql中,编写一个SQL查询来统计右手击球(或击球)和左手投掷(或投掷)的玩家数量,反之亦然。

players 表中有两列,称为 bats throws

我尝试了两种方法:

SELECT COUNT(id) FROM players
WHERE (bats = 'R' AND throws = 'L') OR (bats = 'L' AND throws = 'R');

给出了正确的结果。

不过,我也尝试过这个:

SELECT COUNT(id) FROM players
WHERE throws<>bats AND throws IS NOT NULL AND bats IS NOT NULL;

(根据我)逻辑上应该给出相同的答案。有人可以解释我缺少什么吗?抱歉,如果有任何格式问题,因为这是我的第一个问题。

sql sqlite cs50
1个回答
0
投票

如果

bats
throws
只有两个非空选项,那么您的第二个查询将与第一个查询等效。然而,有三个。也有双手击球的球员(即
bats
值为
'B'
):

sqlite> SELECT DISTINCT bats FROM players WHERE bats IS NOT NULL;
R
L
B

同样,有些球员的

throws
值为
'S'
,尽管我承认我对棒球了解不够,不知道这意味着什么:

sqlite> SELECT DISTINCT throws FROM players WHERE throws IS NOT NULL;
R
L
S 
© www.soinside.com 2019 - 2024. All rights reserved.