子查询本身是否支持“跨库查询”,主要取决于你使用的数据库系统及其具体能力,而不是 SQL 标准里“子查询”这个概念本身的限制。
下面分情况说:
一般指:
SELECT * FROM db1.table_a
WHERE id IN (SELECT id FROM db2.table_b)
SELECT * FROM db1.t1
WHERE id IN (SELECT id FROM db2.t2);
FEDERATED 引擎SELECT * FROM schema1.t1
WHERE id IN (SELECT id FROM schema2.t2);
postgres_fdwSELECT * FROM db1.dbo.t1
WHERE id IN (SELECT id FROM db2.dbo.t2);
SELECT * FROM [Server2].db1.dbo.t1
WHERE id IN (SELECT id FROM [Server1].db2.dbo.t2);
SELECT * FROM t1
WHERE id IN (
SELECT id FROM t2@remote_db
);
子查询语法的“跨库能力”,取决于数据库是否允许在 SQL 中直接访问多个库。
| 场景 | 是否支持 |
|---|---|
| 同实例跨库(MySQL / PG / SQL Server / Oracle) | ✅ |
| 跨实例(SQL Server / Oracle) | ✅ |
| 跨实例(MySQL / PG 原生) | ❌ |
| 异构数据库 | ❌(需 FDW / 中间件) |
如果你能告诉我:
我可以给你具体可执行的 SQL 写法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。