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#);

每次执行此查询时,我都会收到以下消息:

'#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 个表:“students”、“test”、“subjects”。

4

3 回答 3

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');
于 2013-01-16T18:07:00.830 回答
0

str_to_date

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 中创建字符串查找的有效方法。你想使用单引号'

于 2013-01-16T18:08:11.677 回答
0

PhpMyAdmin 为每个命令添加一段 SQL 以限制返回的记录数。

LIMIT 0, 30

我会从查询末尾删除分号,否则,SQL 会认为这个额外的片段是另一个查询。

WHERE ((test.date)=#1/21/2013#)

另外,我从未见过这样#的查询中使用的符号,您可能在那里遇到问题。

编辑:根据其他所有人(忽略实际 SQL 错误...)的说法,#无效,请改用引号。

另一个编辑:实际上,这个#符号似乎是有效的。

选择带有日期条件的查询

于 2013-01-16T18:10:13.317 回答