MySQL使用2个常用属性连接3个表

时间:2012-01-25 23:45:01

标签: mysql join left-join

我有3个表格,结构如下:

表-A:

  • DateIDA1A2

表-B:

  • DateIDB1

Table_C:

  • DateIDC1C2C3

我想将所有三个人加入一个包含属性的表:DateIDA1A2B1C1C2C3

对于3个表,一些日期和ID是相同的但有些不是这样我想要做LEFT JOIN UNION然后RIGHT JOIN这样的事情让我不要丢失任何日期和ID行。似乎我需要日期和ID组合来获取他们自己的唯一标识符,以便我可以加入表格,但我遇到了障碍。

1 个答案:

答案 0 :(得分:2)

你可以尝试这个:

SELECT Date, ID, A1, A2, B1, C1, C2, C3
FROM (
    SELECT Date, ID
    FROM Table_A
    UNION
    SELECT Date, ID
    FROM Table_B
    UNION
    SELECT Date, ID
    FROM Table_B
) d
LEFT JOIN Table_A a on (d.Date=a.Date and d.ID=a.ID)
LEFT JOIN Table_B b on (d.Date=b.Date and d.ID=b.ID)
LEFT JOIN Table_C c on (d.Date=c.Date and d.ID=c.ID)

这应该可以为您提供所需的答案,但我认为对于大型数据集,该语句会非常慢。