sql - 在Where in () 中传递查询

标签 sql database postgresql

我有一个如下所示的查询,

select * from tbl1 where field1 in (select field2 from tbl2 where id=1)
  • 其中 field1 的类型为整数
  • select field2 from tbl2 where id=1 将返回“1,2,3”,这是一个字符串

显然,我们不能传递字符串来检查整数类型的字段。我想问的是,如何解决上述查询?或者有没有其他解决方案?

我的数据库管理系统:Postgresql 9.0.3

最佳答案

select *
from tbl1
where field1 in (
    select regexp_split_to_table(field2, ',')::int
    from tbl2
    where id=1
)

伊戈尔建议的变体

select *
from tbl1
where field1 = any (
    select regexp_split_to_array(field2, ',')::int[]
    from tbl2
    where id=1
)

关于sql - 在Where in () 中传递查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19227459/

相关文章:

java - 为什么 MySQL 数据库访问需要在服务器 URL 中使用正斜杠?

database - 更新 postgres 表以压缩第二个表中的重复值

sql - Postgres - 'time without time zone' 范围和排除约束

sql - 第二列未在 sql 查询中排序,其中我按顺序使用 case 语句

php - 谷歌图表实时更新ajax

sql - 任何想法为什么这个连接查询执行表扫描,如果有办法我可以消除它?

sql - 如何为一列中的每个值复制相同的行?

ruby-on-rails - Rails 网页有一个重定向循环 ERR_TOO_MANY_REDIRECTS

jquery - 将多个复选框值保存到 sql 数据库

sql - 性能瓶颈 - Linq to SQL 或数据库 - 我怎么知道?