[英]Adding Multiple Columns from Multiple Tables to One column in a Query MYSQL
因此,就像标题所说的那样,我正在尝试合并查询中具有相似列的表。 结果应该是我将有一个师,旅,团,其中团可以作为2个表格来填充。 但是我在合并两个表的列以使查询中的那一列时遇到麻烦。 这是我尝试过的:
SELECT d.name Division
, b.name Brigade
, r.name Regiment
, s.name Regiment
, d.CO
, b.FOB
, r.Combatants
FROM ArmyDivision d
, ArmyBrigade b
, ArmyRegiment r
, ArmySpecRegiment s
WHERE b.CO = d.CO
AND b.FOB = r.FOB
AND d.CO = s.CO
因此,r.name和s.name应该在“团”下查询的同一列中。 我知道这是错误的,这是一个长期的尝试。 我尝试过这种方法的不同变体,但是什么也没有做,谷歌不是很有帮助,因为它显示了如何将一个表中的列添加到另一个表中(不是我想要的)。 所以基本上,我将如何有效地做到这一点?
另外,AmrySpecRegiment中的数据没有旅,只有一个部门,因此我假设旅对于这些条目将为空。 我不知道这对如何执行此查询是否有所不同,但我想可能还会让您知道。
SELECT d.name as Division, b.name as Brigade,r.name as Regiment,s.name as Regiment, d.CO, b.FOB, r.Combatants
FROM ArmyDivision d
INNER JOIN (ArmyBrigade b
INNER JOIN ArmyRegiment r
ON b.FOB=r.FOB)
ON b.CO=d.CO
INNER JOIN ArmySpecRegiment s
ON d.CO = s.CO
必要时可以将INNER更改为LEFT
另外,要在一列中包含多个字段,请使用CONCAT。
您是否要获取r.name
和s.name
列的串联结果。 在这种情况下,您可以使用如下所示的CONCAT()
函数。 另外,请注意,我已将旧样式的隐式连接语法更改为ANSI92样式的显式连接语法。
select d.name as Division,
b.name as Brigade,
CONCAT(r.name, ' ', s.name) as Regiment,
d.CO,
b.FOB,
r.Combatants
from ArmyDivision d
join ArmyBrigade b on b.CO=d.CO
join ArmyRegiment r on b.FOB=r.FOB
join ArmySpecRegiment s on d.CO=s.CO;
您提取的两列均作为“团”。 据我所知,如果使用相同的名称,则无法执行此操作。 如果您使用“ r.name作为Regiment_1,s.name作为Regiment_2”之类的东西,则会将值带到两列。
当您说时,您希望两列都在一个列中,例如:我们可能在两列中包含first_name和last_name。 现在,您希望将两个列的值都放在一列以显示全名,
可以通过> SELECT CONCAT(first_name,'',last_name)AS FullName来完成;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.