繁体   English   中英

MySQL内部联接查询语法错误

[英]MySQL Inner Join Query Syntax error

我是MySQL的新手,无法弄清楚这里出了什么问题。 我有两张桌子。 左表称为“锻炼”。 相关列是datedate类型)和id (类型int)。

右边的表称为Workout_locations (相关字段: workout_id type int, and location_id type int )。

Workout_locations.workout_id字段是Workouts.idWorkout_locations.workout_id

我要做的只是得到两列的表格: date (来自Workouts)和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语法有误; 在第1行的“ INNER JOIN Workout_locations ON Workouts.id = Workout_locations.workout_id”附近,查看与您的MySQL服务器版本相对应的手册以使用正确的语法。

我希望对于有经验的人来说,这是一个非常容易发现的错误。 有人看到吗? 谢谢!

您的INNER JOIN应该在WHERE之前。 我也不认为您需要在BETWEEN子句周围使用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';

另外,尽管从技术上讲 ,它们使您摆脱了它,但您应避免使用“ date”作为选定的列名(这是一个保留字 )。

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

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';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM