这是我写的查询:
SELECT students.name, subjects.sub
FROM students INNER JOIN (subjects INNER JOIN test ON subjects.IDsub = test.IDsub) ON students.IDstu = test.IDstu
WHERE ((test.date)=#1/21/2013#);
每次执行此查询时,都会收到以下消息:
'#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第4行'LIMIT 0,30'附近使用正确的语法
我认为问题在于日期格式,因为如果我执行这个:
SELECT students.name, subjects.sub
FROM students INNER JOIN (subjects INNER JOIN test ON subjects.IDsub = test.IDsub) ON students.IDstu = test.IDstu
WHERE ((test.IDsub)=4);
一切正常!
在数据库中有3个表:“学生”,“测试”,“科目”。
答案 0 :(得分:0)
日期应该是这样的,即代替#
使用'
SELECT students.name, subjects.sub
FROM students INNER JOIN
(subjects INNER JOIN test ON subjects.IDsub = test.IDsub)
ON students.IDstu = test.IDstu
WHERE ((test.date)='1/21/2013');
答案 1 :(得分:0)
SELECT students.name, subjects.sub
FROM students INNER JOIN (subjects INNER JOIN test ON subjects.IDsub = test.IDsub) ON students.IDstu = test.IDstu
WHERE ((test.date)=str_to_date('1/21/2013');
我看到的另一个问题是使用井号#
不是在mysql中创建字符串查找的有效方法。您想使用单引号'
答案 2 :(得分:0)
PhpMyAdmin为每个命令添加一段SQL,以限制返回的记录数。
LIMIT 0, 30
我会从查询的末尾删除分号,否则,SQL会认为这个额外的代码段是另一个查询。
WHERE ((test.date)=#1/21/2013#)
另外,我从未见过像这样的查询中使用的#
符号,你可能会遇到问题。
编辑:根据其他人(忽略了实际的SQL错误...),#
无效,请改用引号。
另一个编辑:实际上,#
符号似乎有效。