【发布时间】:2016-03-15 10:41:37
【问题描述】:
我有一个表,其中包含我想要匹配的数组。通过使用&& 运算符进行匹配:
SELECT * FROM table WHERE data && ARRAY['foo','bar'];
id | data
---+----------
1 | {foo}
2 | {bar}
6 | {bar,foo}
我现在想要的下一件事也是按照它们在该数组中的顺序对它们进行排序,例如:
SELECT * FROM table WHERE data && ARRAY['foo','bar'] ORDER BY data && ARRAY['foo','bar'];
id | data
---+----------
1 | {foo}
6 | {bar,foo}
2 | {bar}
这可能吗?
【问题讨论】:
-
可能类似于
ORDER BY position( 'foo' in array_to_string(data, ',') ), position( 'bar' in array_to_string(data, ',') )。 -
@Patrick
data是TEXT[]列。 -
@HannoBinder 看起来像是一个解决方案,但是如果我不知道要比较的数组的长度怎么办。就我而言,我首先从另一个列/表中选择该数据。
-
@Patrick 我的错误
col应该是data,我更新了我的问题。 -
“我首先从另一个列/表中选择该数据”——您确定数组是存储数据的正确方式吗?似乎加入可以做你需要的。
标签: arrays postgresql sql-order-by