MySQL加入多个表

时间:2012-07-05 19:06:13

标签: mysql sql join

我有三张桌子:

t1.estimate, t1.mid, t1.description, t1.status

t2.mid, t2.mname, t2.mphone, t2.memail

t3.estimate, t3.action

我需要加入这些表,但我遇到的问题是t2和t3可能不包含要加入t1的记录。表t1是将应用过滤器的主表。当加入'mid'时,表t2将99.9%的时间包含匹配。但是表t3是一个只存储信息并在用户将其输入表格时创建估计的表格。 t1中可以有40,000多条记录,但t3中只有5,000条记录。

这是我当前的代码,但它只显示所有三个表中的记录。我希望从t1显示值,即使在t2和t3上没有要加入的记录。

SELECT DISTINCT
    t1.estimate, t1.mid, t2.mname, t1.description,
    t1.status, GROUP_CONCAT(t3.action)
FROM t1
LEFT OUTER JOIN t2 ON t1.mid = t2.mid
LEFT OUTER JOIN t3 ON t1.estimate = t3.estimate
WHERE t1.status LIKE '0%'
GROUP BY t3.estimate

1 个答案:

答案 0 :(得分:3)

如果没有加入记录,您需要将GROUP BY更改为使用t1.estimate而不是t3.estimate,因为t3.estimate将为NULL。