【发布时间】:2010-12-11 18:00:44
【问题描述】:
我总是虽然 join 得到某些结果,然后只使用这些结果进行连接。
SELECT * FROM tbl AS t1
JOIN tbl2 AS t2 ON t1.id = t2.foreignId
JOIN tbl3 AS t3 ON t2.id = t3.foreignId
WHERE t1.date > SOMEDATE
据我了解,它将运行 where 语句并仅获取日期范围内的结果。然后它将遍历所有 t2 并且仅尝试匹配连接到 t1 的 id(这可能会使结果更小)。然后使用这个较小的潜在结果,它将对 T3 执行相同的操作并输出最终结果。
但它似乎不是这样工作的?并且表格成倍增加而不是变小。显然我上面描述的更像是子查询? (注意我说的是 LIKE。我不知道子查询是如何工作的)
JOIN 是如何工作的,JOIN 和子查询有什么区别?
我同时使用 MySql 和 SQLite。我不知道那是否相关。
【问题讨论】:
-
这不是 MySQL 问题。它通常适用于任何 SQL 数据库。 (与该用户发布的大多数类似问题一样......)
标签: sql mysql sqlite join subquery