SQL中的MAP关键字是什么?
问题:SQL中的MAP关键字是什么?
我一直在尝试通过学习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)
以前没有使用别名的经验,也没有加入的经验,所以我在这个问题上停留了一段时间。我被卡住的时间超出了必要的时间,因为在 Emacssql-mode中,单词 map(我现在理解为表book_to_author_map的别名)被突出显示为 SQL 关键字。我花了很多时间寻找有关此关键字的文档,但一无所获(除了有关sqlmap... 的大量信息)。
偷看Emacssql-mode的源码发现map被指定为关键字sql-mode-postgres-font-lock-keywords的一部分,于是开始搜索map与PostgreSQL的关系,在[中找到了PostgreSQL文档]中的SQL关键字列表(https://www.postgresql.org/docs/8.3/static/sql-keywords-appendix.html).关键字MAP被指定为 SQL:2003 的“非保留”关键字和 SQL:1999 的“保留”关键字。但是,到目前为止,我一直无法找到与 SQL 相关的该关键字的任何文档。
我的问题,更多的是出于好奇,如标题所示:SQL 中的MAP关键字是什么?
解答
我没有标准的副本,但从语法判断,MAP WITH <function>是CREATE ORDERING语句的子句。
CREATE ORDERING用于指定用户定义类型的排序顺序,但据我所知,唯一实现MAP WITH子句的供应商是Teradata。看起来此子句允许您通过提供将自定义类型映射到具有已知排序的现有类型的函数来定义自定义类型的排序顺序。
Postgres 中没有这样的语句,它通过运算符类和排序规则定义排序顺序。
更多推荐
所有评论(0)