繁体   English   中英

将多个表中的多个列添加到查询MYSQL中的一列

[英]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.names.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.

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