【发布时间】:2014-04-09 07:12:14
【问题描述】:
我需要一个 MySQL 查询来连接多个表,前提是这些表具有匹配的 ID 并且它确实存在于表中。
我有 1 个父表和几个子表。父表包含每一行,而子表只包含他们需要的行。如果父表的 ID 存在于其中一个子表中,我需要将父表与子表连接起来。
这是我目前使用的,但不起作用。此查询最终没有结果,因为子表行可能不存在。例如,“widgets”表和“widget_login”表中可能存在 1 行,因为该小部件是“登录”小部件,但所有其他表都是空的。但它仍应检查所有表。我不确定如何克服这个问题。
SELECT FROM widgets
JOIN widget_login ON widget_login.id=widgets.id
JOIN widget_admin ON widget_admin.id=widgets.id
JOIN widget_facebook ON widget_facebook.id=widgets.id
WHERE widgets.type='specific_type'
etc...
【问题讨论】:
-
如果您只需要所有子表中存在的匹配行,这将正常工作,否则如果您需要显示父表中的每一行,即使它们存在或不存在,请使用 LEFT OUTER JOIN子表
-
是否有从子表中删除不存在的行?