SQL中的MAP关键字是什么?

时间:2016-10-18 15:34:25

标签: sql postgresql emacs

我一直在努力通过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 } } 关键字是什么?

1 个答案:

答案 0 :(得分:3)

我没有该标准的副本,但根据grammar判断,MAP WITH <function>CREATE ORDERING声明的一个条款。

CREATE ORDERING用于指定用户定义类型的排序顺序,但据我所知,实现MAP WITH子句的唯一供应商是Teradata。看起来这个子句允许您通过提供一个函数来定义自定义类型的排序顺序,该函数将其映射到具有已知顺序的现有类型。

Postgres中没有这样的声明,它通过operator classescollations定义排序顺序。