繁体   English   中英

Mysql连接多个表

[英]Mysql Join Multiple tables

我正在尝试加入5个不同的表。 他们每个人都有一个

名称列,ID列和Exp列

除此之外,所有这些都不完全相同。

SELECT name FROM `weapons`,`arrows`,`trees`,`ores`,`bars` ORDER BY exp DESC

我所能提供的一切,就是说名称不明确。 谢谢!

就像5个独立的用户表,我正在尝试将它们合并成一个大列表

如果具有相同名称的列,则需要将表名称添加到该列。 您还可以为表使用别名,并缩短查询时间。

如果要选择weaponsarrows表的name列,请执行

SELECT w.name, a.name
FROM `weapons` as w, `arrows` as a,`trees` as t,`ores` ass o,`bars` as b
ORDER BY exp DESC

您可能想使用一个表前缀来标识要从其中检索name的表,例如,如下所示:

 SELECT w.name FROM weapons w, arrows a, trees t, ores o, bars b ORDER BY exp DESC

我认为您也缺少加入条件。

您的查询应类似于:

SELECT w.name 
FROM weapons w JOIN arrows a
     ON w.id = a.id
     JOIN trees t
     ON a.id = t.id
     JOIN ores o 
     ON t.id = o.id
     JOIN  bars b 
     ON o.id = b.id
ORDER BY exp DESC;

或者,如果要union --> combine rows from all tables则:

 SELECT name 
 FROM weapons 
 UNION ALL
 SELECT name 
 FROM arrows
 UNION ALL
 SELECT name 
 FROM trees
 UNION ALL
 SELECT name 
 FROM ores
 UNION ALL
 SELECT name 
 FROM bars;

如果要查找一个大列表,则要UNION表,而不要JOIN。

SELECT * FROM weapons
UNION
SELECT * FROM arrows
UNION 
SELECT * FROM trees
UNION 
SELECT * FROM ores
UNION
SELECT * FROM bars;

如果只需要名称,请使用SELECT name而不是SELECT *

如果您需要一个大型列表,则可以使用以下列表:

select name, id, exp, 'weapons' as TableFrom
from weapons
union all
select name, id, exp, 'arrows' as TableFrom
from arrows
union all
select name, id, exp, 'trees' as TableFrom
from trees
union all
select name, id, exp, 'ores' as TableFrom
from ores
union all
select name, id, exp, 'bars' as TableFrom
from bars
order by 3

我添加了最后一列,以帮助确定数据来自哪个表。 如果您不想这么做,可以将其删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM