在mysql表中我有一个以保留字“from”命名的列,所以我尝试使用这样的backtips请求
SELECT * FROM timesheets WHERE user_id = 1 WHERE `from` <= 2013-10-31 WHERE `from` > 2013-01-01
但它不起作用,有一个错误:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;
你能帮助我吗?
答案 0 :(得分:1)
您的SQL语句中有三个WHERE
子句。
WHERE user_id = 1 WHERE `from` <= 2013-10-31 WHERE `from` > 2013-01-01
您没有引用日期。
这些点使您的SQL查询无效。
→用WHERE
s:
AND
条款
WHERE user_id = 1 AND (`from` <= '2013-10-31' AND `from` > '2013-01-01')
→您甚至可以使用BETWEEN ... AND ...
日期:
WHERE user_id = 1 AND (`from` BETWEEN '2013-01-01' AND '2013-10-31')
括号不一定是必要的,但为了便于阅读,我更喜欢添加括号。
答案 1 :(得分:0)
您的查询是无效的SQL。查询中只能有一个WHERE子句,并且您有3个。
至于“保留”列名称,只要你输入反引号(from
)就可以了。
你可能正在寻找这样的东西:
select *
from timesheets
where user_id = 1
AND `from` BETWEEN '2013 - 01 - 01' AND '2013 - 10 - 31';