MySQL 内连接查询语法错误

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

我是一名 MySQL 新手,无法弄清楚这里出了什么问题。我有两张桌子。左表称为“锻炼”。相关列是

date
(日期类型)和
id
(int 类型)。

右表称为

Workout_locations
(相关字段:
workout_id type int, and location_id type int
)。

连接字段为

Workouts.id
Workout_locations.workout_id

我想做的就是获取一个包含两列的表格:

date
(来自“锻炼”)和
location_id
(来自
Workout_locations
)。我只需要根据几个字段从
Workouts
表中提取记录(sql 语句应该清楚地说明这一点)。

这是我的sql语法:

SELECT Workouts.date as date, Workout_locations.location_id as loc_id
FROM Workouts 
WHERE Workouts.pacegroup_id='9' AND (Workouts.date BETWEEN '2013-08-19' AND '2013-08-25') 
INNER JOIN Workout_locations ON Workouts.id=Workout_locations.workout_id"

但我收到此错误:

您的 SQL 语法有错误;检查手册 与您的 MySQL 服务器版本相对应,以便使用正确的语法 靠近“INNER JOIN Workout_locations ON” Workouts.id=Workout_locations.workout_id' 在第 1 行

我希望对于有这方面经验的人来说,这是一个很容易发现的错误。任何人都可以看到吗?谢谢!

mysql
2个回答
9
投票

您的

INNER JOIN
应位于
WHERE
之前。我也不认为你需要在 BETWEEN
 子句周围使用括号 
,但我怀疑它会导致错误:

SELECT Workouts.date as date, Workout_locations.location_id as loc_id FROM Workouts INNER JOIN Workout_locations ON Workouts.id=Workout_locations.workout_id WHERE Workouts.pacegroup_id = '9' AND Workouts.date BETWEEN '2013-08-19' AND '2013-08-25';

此外,虽然它们

技术上让您侥幸逃脱,但您应该避免使用“日期”作为选定的列名称(这是一个保留字)。

您也可以进行一些简化,以使内容更易于阅读:

SELECT Workouts.date AS wo_date, Workout_locations.location_id AS loc_id FROM Workouts w INNER JOIN Workout_locations l ON w.id = l.workout_id WHERE w.pacegroup_id = '9' AND w.date BETWEEN '2013-08-19' AND '2013-08-25';
    

0
投票
SELECT Person.firstName, Person.lastName, IFNULL(Address.city, NULL) AS city, IFNULL(Address.state, NULL) AS state, FROM Person LEFT OUTER JOIN Address ON Person.personId = Address.personId;
这就是我得到的,请协助:

MySQL 服务器版本,用于在“FROM Person”附近使用正确的语法 LEFT JOIN 地址 ON Person.personId = Address.personId' 在第 7 行

© www.soinside.com 2019 - 2024. All rights reserved.