在PostgreSQL中,假设我有一个包含二维整数数组的表,另一个表存储一个大小为2的数组的列。
CREATE TABLE ta (arr int[][]);
CREATE TABLE tb (pos int[]);
我想根据'pos'找到的值在'arr'中查找一个元素。我已经知道我可以这样做:
SELECT arr[(SELECT pos[1] FROM tb WHERE ... LIMIT 1)][(SELECT pos[2] FROM tb WHERE ... LIMIT 1)] FROM ta;
但是,这需要重复相同的子查询两次。有没有办法实现这一点,而不必为'arr'的每个维度重复子查询?
(上下文:我有一个由'arr'给出的x和y坐标的棋盘,需要根据玩家或对象的位置访问存储在该棋盘中的值,由'pos'给出。任何关于一个更好的模式也可以,特别是如果我上面要求的是不可能的。)