我有下面的表结构。
master table >
m_id, pk
m_name,
p_id, fk
s_id, fk
t_id, fk
x_id fk
p table >
p_id, pk
p_name
s table >
s_id, pk
s_name
t table >
t_id, pk
t_name
x table >
x_id, pk
x_name
我想获取给定m_id的m_id,m_name,p_name,s_name,t_name,x_name。
我在查询中应用内部联接
SELECT mt.m_id, mt.m_name, pt.p_name, st.s_name, tt.t_name, xt.x_name
FROM master mt
INNER JOIN p AS pt ON pt.p_id = mt.p_id
INNER JOIN s AS st ON st.s_id = mt.s_id
INNER JOIN t AS tt ON tt.t_id = mt.t_id
INNER JOIN x AS xt ON xt.x_id = mt.x_id
WHERE mt.m_id = 50;
问题:还有其他有效的方法可以实现此目的,或者我的查询还可以吗?
谢谢。
最佳答案
您的查询是完全可以的。如果您只想更改查询,则可以使用以下之一。我只是删除了别名
SELECT mt.m_id, mt.m_name, p.p_name, s.s_name, t.t_name, x.x_name
FROM master mt
INNER JOIN p ON p.p_id = mt.p_id
INNER JOIN s ON s.s_id = mt.s_id
INNER JOIN t ON t.t_id = mt.t_id
INNER JOIN x ON x.x_id = mt.x_id
WHERE mt.m_id = 50;
关于mysql - sql查询以从5个表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28209078/