我的输出存储在我的数据库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
连接所有七个表。
我可能犯了一个常见的错误,但我找到的教程并没有帮助我。任何有关简短解释的帮助都将不胜感激。
有人可以帮我这个吗?
答案 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
必须是主键)。