Sql postgres INTERSECT中的类型不匹配

Sql postgres INTERSECT中的类型不匹配,sql,postgresql,postgresql-9.1,Sql,Postgresql,Postgresql 9.1,我正在尝试执行select语句的交集,该语句检索文本[],并与我动态计算的文本[]进行交集 当我运行这个脚本时,我得到了错误 错误:无法匹配相交类型文本[]和文本 如何修复此错误 do $$ declare p json; total_time float; t float; arr text[]; query1 text; arr := '{}'; for j in 80..120 loop arr := array_append(arr, j:

我正在尝试执行select语句的交集,该语句检索文本[],并与我动态计算的文本[]进行交集

当我运行这个脚本时,我得到了错误

错误:无法匹配相交类型文本[]和文本

如何修复此错误

do $$
declare
  p json;
  total_time float;
  t float;
  arr text[];
  query1 text;
    arr := '{}';
    for j in 80..120 loop
      arr := array_append(arr, j::text);
      query1 := 'select sub_id from table where main_id=1 INTERSECT select unnest($1)';
      execute 'explain (analyse, format json) ' || query1 using arr into p;
      t := (p->0->>'Planning Time')::float + (p->0->>'Execution Time')::float;
      total_time := total_time + t;
    end loop;
我的表的架构:

db=# \d+ table
                          Table "table"
    Column     |  Type   | Modifiers | Storage  | Stats target | Description 
---------------+---------+-----------+----------+--------------+-------------
 main_id       | integer |           | plain    |              | 
 sub_id        | text[]  |           | extended |              | 

sub_id
是一个数组
arr
是一个数组,但您正在取消对它的测试-因此现在它是(文本)值的序列。您正在尝试对数组和文本值进行交集。要修复它,要么两个都不测试,要么两个都不测试。(但请选择正确的一个,因为每种方法的结果都不一样——要么在数组本身上相交,要么在数组中包含的值上相交。)


sub_id
是一个数组
arr
是一个数组,但您正在取消对它的测试-因此现在它是(文本)值的序列。您正在尝试对数组和文本值进行交集。要修复它,要么两个都不测试,要么两个都不测试。(但请选择正确的一个,因为每种方法的结果都不一样——要么在数组本身上相交,要么在数组中包含的值上相交。)

SELECT UNNEST(sub_id) FROM table WHERE main_id = 1
INTERSECT
SELECT UNNEST(arr)