我有一个关于 JOINS 的快速问题。
如果我想从 table1 中查找 table2 中使用了多少项目,我会使用 INNER JOIN 还是 LEFT JOIN(见下文)。
INNER JOIN 会告诉我两个表中的“ID”在哪里,因此应该表示 table1 中的 ID 何时在 table2 中使用,但随后列出 ID 与 table1 ID 相同的所有 table2 ID(LEFT JOIN)应该带回相同的?
但结果不同:
INNER JOIN 带回 252,222 LEFT JOIN 带回 258,637
PS:table2 是 table1 的子项,因此 table2 ID 只能来自 table1(table1 是产品列表,table2 是所选产品列表)所以要查找 table1 中所有在 table2 中选择的产品(已选择)
SELECT DISTINCT
t1.name, t1.details
FROM
table1 AS t1
INNER JOIN
table2 AS t2 ON t1.id = t2.t1_id
SELECT DISTINCT
t1.name, t1.details
FROM
table1 AS t1
LEFT JOIN
table2 AS t2 ON t1.id = t2.t1_id
这将是正确的 SQL,我猜是 INNER JOIN。