我正在尝试查询sql数据库,但我遇到了麻烦。下面的语法是否有错误,或者是我缺少的其他内容?
SELECT Name, DateTime, num1, num2
FROM names_E6
WHERE DateTime between '2012-1-27' AND '2012-1-27'
WHERE num1 between '0' AND '5'
WHERE num2 between '0' AND '6'
答案 0 :(得分:5)
是的,您不能在一个WHERE
中拥有多个SELECT
子句。使用AND
或OR
分隔条件(根据查询的外观,我猜你想要AND
)。
SELECT Name, DateTime, num1, num2
FROM names_E6
WHERE DateTime between '2012-1-27' AND '2012-1-27'
AND num1 between '0' AND '5'
AND num2 between '0' AND '6'
答案 1 :(得分:2)
除了有关语法的答案之外,我还想对值文字的用法添加注释:
如果num1和num2是数字,则条件应为
AND num1 between 0 AND 5
AND num2 between 0 AND 6
注意数字周围缺少单引号。有些DBMS甚至不允许从字符升级'5'
转换为数字,其他人可能会对奇怪的结果感到惊讶,如果这样的隐式类型转换成功,大多数都不会在列上使用索引。 / p>
您还应该知道,由于服务器和/或客户端的隐式类型转换(String - > Date)和区域设置,表达式DateTime between '2012-1-27' AND '2012-1-27'
可能无法始终正常工作。为了安全起见,您应该使用例如日期文字的ANSI标准:
DateTime between DATE '2012-01-27' AND DATE '2012-01-27'
请注意关键字DATE
以开始日期字面值,以及以两位数字给出的月份。