通过唯一标识符在MySQL中连接多个表

时间:2014-11-25 19:55:15

标签: mysql join

我的输出存储在我的数据库A中,并且有七个表(table1,table2等)。每个表包含30个输出变量,用于用户执行的任务的不同块。

我是MySQL的新手,想要通过他们共同的“标识符”变量UNIQUEID来加入这七个表。

我尝试过(前四个例子):

SELECT * 
FROM table1, table2, table3, table4
WHERE table1.uniqueid = table2.uniqueid = table3.uniqueid = table4.uniqueid
SORT BY table1.uniqueid

这适用于两张桌子,但不适用于三张或更多张桌子。理想情况下,我希望每个UNIQUEID连接所有七个表。

我可能犯了一个常见的错误,但我找到的教程并没有帮助我。任何有关简短解释的帮助都将不胜感激。

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:2)

使用显式连接语法,您可以像下面这样做

SELECT * 
FROM table1
JOIN table2
ON table1.uniqueid = table2.uniqueid
JOIN table3
ON table2.uniqueid = table3.uniqueid
...

答案 1 :(得分:1)

如果所有表中都有uniqueId,您可以使用:

select *
from table1 as t1
     inner join table2 as t2 on t1.uniqueId = t2.uniqueId
     inner join table3 as t3 on t1.uniqueId = t3.uniqueId
-- And so on
ORDER BY t1.uniqueId

(注意我正在使用别名来避免写表的全名)

另一种选择:

select t1.*, t2.* -- And so on
from table1 as t1
     inner join table2 as t2 using (uniqueId)
     inner join table3 as t3 using (uniqueId)
-- And so on
ORDER BY t1.uniqueId

此处using有助于避免一次又一次地写tx.uniqueId = ty.uniqueId

另外,请注意,如果要对数据进行排序,则必须使用ORDER BY(不是sort


我建议您不要使用*,而是从每个表格中明确选择所需的字段。

另外,检查您的表是否已正确编入索引(至少,uniqueId必须是主键)。