[英]Mysql Join Multiple tables
我正在尝试加入5个不同的表。 他们每个人都有一个
名称列,ID列和Exp列
除此之外,所有这些都不完全相同。
SELECT name FROM `weapons`,`arrows`,`trees`,`ores`,`bars` ORDER BY exp DESC
我所能提供的一切,就是说名称不明确。 谢谢!
就像5个独立的用户表,我正在尝试将它们合并成一个大列表
如果具有相同名称的列,则需要将表名称添加到该列。 您还可以为表使用别名,并缩短查询时间。
如果要选择weapons
和arrows
表的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.