我有一个表与sales被记录year如下:
id year sales
1 2001 10
2 2002 20
3 2003 30
Run Code Online (Sandbox Code Playgroud)
我要加入自己的桌子,以便sales_difference从一年到下一年:
SELECT s1.*, s1.sales - s2.sales AS sales_difference
FROM sales s1, sales s2
WHERE s1.year = s2.year + 1
Run Code Online (Sandbox Code Playgroud)
这个查询运行得很慢,所以我想创建一个索引year + 1.根据PostgreSQL文档,您可以在表达式上创建索引,例如:
CREATE INDEX test1_lower_col1_idx ON test1 (lower(col1));
Run Code Online (Sandbox Code Playgroud)
所以我尝试这样做:
CREATE INDEX sales_year_plus_one on sales (year + 1);
Run Code Online (Sandbox Code Playgroud)
这给了我:
ERROR: syntax error at or near "+"
LINE 1: ...sales_year_plus_one on sales (year + 1);
^
Run Code Online (Sandbox Code Playgroud)
为什么不允许这种特殊表达?
您需要将表达式括在一组额外的括号中:
CREATE INDEX sales_year_plus_one on sales ((year + 1));
Run Code Online (Sandbox Code Playgroud)
请参阅文档中的摘录:
CREATE INDEX命令的语法通常需要在索引表达式周围编写括号,如第二个示例所示.当表达式只是函数调用时,可以省略括号,如第一个示例中所示.
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |