在 mysql 表中,我有以保留字"from"命名的列,所以我尝试使用这样的反向提示请求
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;
你可以帮我吗?
-
SQL 语句中有三个
WHERE
子句。WHERE user_id = 1 WHERE `from` <= 2013-10-31 WHERE `from` > 2013-01-01
-
你没有引用你的日期。
这些点会使 SQL 查询无效。
→ 将多余的WHERE
子句替换为 AND
s:
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')
括号不应该是必需的,但我更喜欢添加它们以提高可读性。
您的查询是无效的 SQL。一个查询中只能有一个 WHERE 子句,而您有 3 个。至于"保留"列名,只要你把反引号(from
)放在一起,你应该没问题。
您可能正在寻找这样的东西:
select *
from timesheets
where user_id = 1
AND `from` BETWEEN '2013 - 01 - 01' AND '2013 - 10 - 31';