mysql - 如何解决MySQL错误: #1064 in this case?

标签 mysql sql

MySQL查询:

SELECT SUM(Target) AS target FROM salesmen WHERE `Area Code` IN (SELECT `Area Code` FROM distributors_areas WHERE Regional_Manager IN (SELECT `Name` FROM `regional managers` WHERE ID = 0) OR WHERE Territory_Manager IN (SELECT Name FROM `territory managers` WHERE ID = 'TM_02'))

运行此查询时,出现此错误:#1064 - 您的 SQL 语法有误;查看与您的 MariaDB 服务器版本对应的手册,了解在“WHERE Territory_Manager IN (SELECT Name FROM territory managers WHERE ID = 'TM' at line 1

附近使用的正确语法

最佳答案

SQL 中没有或where。只需:

SELECT SUM(s.Target) AS target
FROM salesmen s
WHERE s.`Area Code` IN
           (SELECT da.`Area Code`
            FROM distributors_areas da
            WHERE da.Regional_Manager IN
                      (SELECT rm.`Name`
                       FROM `regional managers` rm
                       WHERE rm.ID = 0
                      ) OR 
                  da.Territory_Manager IN
                      (SELECT tm.Name
                       FROM `territory managers` tm
                       WHERE tm.ID = 'TM_02'
                      )
           );

我想我在之前的一个问题中提到过您应该在查询中使用表别名。 我在这里重复这个建议!。当您有多个表引用时,您应该始终养成包括表别名和限定所有列名的习惯,以避免在查询中出现常见的、可预防的错误。

关于mysql - 如何解决MySQL错误: #1064 in this case?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56717474/

相关文章:

php - 基于表单中的onChange事件动态构建AJAX请求

php - 如何使用mysql基于月份选择数据

mysql - 多行插入语句包含相同的选择字段

MySQL 从表中选择名称,比较来自相关表的属性

mysql - IN operator caluse 具有 NULL 值似乎有效

mysql - 尝试使用分区来计算mysql中的不同用户

MySQL concat() 和 lower() 怪异

mysql - 在一个部门的所有项目中工作的员工

sql - 无法解决打开的数据读取器错误(需要关闭)

mysql - 自然键 vs 代理键 innodb 外键