简体   繁体   English

如何将数组传递给 PostgreSQL 中的 where 子句?

[英]How do I pass an array to where clause in PostgreSQL?

I'm trying to delete from a table using where clause while passing it an array.我正在尝试使用 where 子句从表中删除,同时将其传递给数组。

DELETE FROM Btemp
WHERE col2 =
    (SELECT ARRAY((SELECT col2 FROM Atemp INTERSECT SELECT col2 FROM Btemp)));

I'm getting this error:我收到此错误:

ERROR:  operator does not exist: character varying = character varying[]
LINE 2: WHERE col2 =
                   ^
HINT:  No operator matches the given name and argument types. You might need to add explicit type casts.
SQL state: 42883

And if do it without array, like below如果没有数组就这样做,如下所示

DELETE FROM Btemp
WHERE col2 =
    (SELECT col2 FROM Atemp INTERSECT SELECT col2 FROM Btemp);

I get error:我得到错误:

ERROR:  more than one row returned by a subquery used as an expression

What should I do?我应该怎么办?

DELETE FROM Btemp
WHERE col2 =
    ANY(SELECT col2 FROM Atemp INTERSECT SELECT col2 FROM Btemp);

further reference: IN vs ANY operator in PostgreSQL进一步参考: PostgreSQL 中的 IN 与 ANY 运算符

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM