我是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"
Run Code Online (Sandbox Code Playgroud)
但是我得到这个错误:
您的SQL语法有误;在第1行的“ INNER JOIN Workout_locations ON Workouts.id = Workout_locations.workout_id”附近,查看与您的MySQL服务器版本相对应的手册以使用正确的语法。
我希望对于有经验的人来说,这是一个非常容易发现的错误。有人看到吗?谢谢!
你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';
Run Code Online (Sandbox Code Playgroud)
另外,尽管从技术上讲,它们使您摆脱了它,但您应避免使用“ 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';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7764 次 |
| 最近记录: |