我希望此查询返回查询 #2 未返回的所有 ID 和相关电子邮件:
select my_table.id, my_table.email
from my_table join another_table on my_table.id=another_table.mytable_id
where my_table.id not in (select array (select my_table.id
from my_table join yetanother_table
on my_table.id = yetanother_table.mytable_id
where yetanother_table.time1 between '2015-01-26T08:00:00.000Z'
and '2015-02-02T07:59:59.999Z'
group by my_table.id))
当我运行它时,在第 3 行的选择附近出现以下错误:
operator does not exist: integer = integer[] You might need to add explicit type casts.
我尝试将数组转换为整数并得到了这个:
cannot cast type integer[] to integer
我还尝试将两者my_table.id
和数组都转换为varchar
. 这消除了错误,但返回的行数比我预期的要少!
第一个问题:为什么我不能integer[]
投到integer
?数组的默认数据类型是什么?有没有比将 my_table.id 和数组都转换为更简洁的方法来消除“操作员不存在”错误varchar
?
并跟进:现在我想知道为什么我的行数太少。它看起来像我写它的方式会返回我想要的吗?即查询#2 未返回的所有ID?
另一个约束 - 我需要用一个语句来做所有事情。