我一直在努力通过SQL Koans来改进我的SQL排序,因为我喜欢边做边学的方法,而且缺乏我的SQL知识。在一套公案中如下:
-- Meditate on MANY-TO-MANY relationships
select a.first_name, a.last_name, b.title
from book b
join book_to_author_map map on _____.id = _____.book_id
join author a on _____.author_id = _____.id
where author_id in (1, 5, 6)
以前没有使用别名的经验,也没有很少的连接经验,我在这个问题上坚持了一段时间。我被困的时间超过了必要的时间,因为在Emacs sql-mode
中,单词 map
(我现在理解为表book_to_author_map
的别名)突出显示为SQL关键字。我花了很多时间寻找关于这个关键字的文档,并没有发现任何东西(除了sqlmap上的大量信息...)。
查看Emacs sql-mode
的源代码我发现map
被指定为关键字sql-mode-postgres-font-lock-keywords
的一部分,所以我开始在map
中搜索MAP
与PostgreSQL的关系,并在a list of SQL keywords in the PostgreSQL documentation中找到它。关键字MAP
被指定为SQL:2003的“非保留”关键字和SQL:1999的“保留”关键字。但是,到目前为止,我无法找到与SQL关联的此关键字的任何文档。
我的问题,更多出于好奇而不是其他任何内容,如标题所示: SQL中的class OuterClass
{
static class InnerClassOne
{
//Class as a static member
}
class InnerClassTwo
{
//Class as a non-static member
}
}
class AnotherClassOne extends OuterClass.InnerClassOne
{
}
class AnotherClassTwo extends OuterClass.InnerClassTwo
{
public AnotherClassTwo()
{
new OuterClass().super(); //accessing super class constructor through OuterClass instance
}
}
关键字是什么?
答案 0 :(得分:3)
我没有该标准的副本,但根据grammar判断,MAP WITH <function>
是CREATE ORDERING
声明的一个条款。
CREATE ORDERING
用于指定用户定义类型的排序顺序,但据我所知,实现MAP WITH
子句的唯一供应商是Teradata。看起来这个子句允许您通过提供一个函数来定义自定义类型的排序顺序,该函数将其映射到具有已知顺序的现有类型。
Postgres中没有这样的声明,它通过operator classes和collations定义排序顺序。