【发布时间】:2018-10-04 04:01:34
【问题描述】:
我正在检查由 Java ORM 工具 (Hibernate) 生成的 SQL,并遇到了这个奇怪的查询。它最初因为 CROSS JOIN 而脱颖而出。但它似乎也在 WHERE 子句中使用了 ANSI-89 JOIN 语法。
SELECT max(c.item)
FROM ItemPubStatus c
CROSS JOIN TargetSystemPub t
CROSS JOIN Item m
WHERE c.targetsystempublication = t.id
AND c.canonicalitem = m.id
AND t.targetsystem = ?
AND m.datapool = ?
AND m.itemtype = ?
- 考虑到 WHERE 子句中的联接,这真的是 CROSS JOIN 吗?它会产生笛卡尔积吗?
- 虽然这个 SQL 是为 MySQL 生成的,但这个应用程序支持几个数据库供应商?我可以期望大多数数据库以相同的方式处理此查询吗?
【问题讨论】: