mysql 请求和保留字作为列名时出错


Error with mysql request and reserved word as column name

在 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';