MySQL:SELECT 与 AND OR 产生不正确的数据?

标签 mysql database

我有一张表,记录了我正在开发的体育应用程序的所有得分比赛。我想从计分表中找出一个球员有多少次助攻。有主要助攻和次要助攻,所以我尝试使用 COUNT(*) WHERE...

返回总助攻的值

我正在使用以下 SQL 语句:

SELECT COUNT(*) FROM teamassist13.AllScoringPlays WHERE GameId = 6124 AND SeasonId = 1 AND P_AssistId = 21 OR S_AssistId = 21;

这为我提供了第 6124 场比赛的准确得分(它返回用户有 2 次助攻),但是当我将 GameId 切换为 6125 时,它会显示用户有 1 次助攻,而他们应该这样做有 0 个。

我也试过下面的语句:

SELECT COUNT(*) FROM AllScoringPlays WHERE GameId = 6124 AND SeasonId = 1 AND (P_AssistId = 21 OR S_AssistId = 21);

然后告诉我玩家有 1 次助攻 GameId 6124(不准确,应该是 2),GameId 6125(准确)有 0 次助攻。

`GameId` 6125 should return 0 assists
`GameId` 6124 should return 2 assists

这是我当前查询的View的结构:

| GameId | TeamId | SeasonId | LeagueId | GoalId | P_AssistId | S_AssistId |
   6124      1         1           1        20        21             23
   6124      1         1           1        19        20             21

好像绕过了OR语句,不知道怎么解决。感谢您的帮助。

最佳答案

您的第二个查询是正确的:

SELECT COUNT(*) FROM AllScoringPlays WHERE GameId = 6124 AND SeasonId = 1 AND
(P_AssistId = 21 OR S_AssistId = 21);

关于MySQL:SELECT 与 AND OR 产生不正确的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16159409/

相关文章:

MySQL查询优化: UNION with rand()

database - SQLSTATE[42000] : Syntax error or access violation: 1305

mysql - 如何为我的表中的多个代码选择最新行?

database - 夏令时期间的generate_series变化 - 根据服务器时区不同结果不同

mysql - 每天返回错误的 SQL 计数值

mysql - 带有 Join 的 SQL 语句 - 缺少记录......(简单的菜鸟请求)

php - 将 % 值插入数据库时​​出现 codeigniter 安全问题

java - 我试图在 java 中的 sqlite 嵌入式数据库中插入一行。插入后,更改仅在该程序中可见

mysql - 在 SQL SELECT 语句中创建循环直到链断开

mysql - SQL 加入缺失行