就像标题所说,我正在尝试组合查询中具有相似列的表。结果应该是我将拥有Division,Brigade,Regiment,其中团队可以填充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应该在Regiment下的查询中的同一列中。我知道这是错的,这是一个很长的镜头。我尝试了不同的变种,但没有,谷歌不是很有帮助,因为它显示如何将列从一个表添加到另一个表(不是我想要的)。所以基本上,我将如何有效地做到这一点?
此外,AmrySpecRegiment中的数据没有一个旅,只是一个分区,因此我假设Brigade对于这些条目是空的。我不知道这是否与如何进行此查询有所不同,但我想也许可以让你知道。
答案 0 :(得分:0)
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。
答案 1 :(得分:0)
您是否尝试获取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;
答案 2 :(得分:0)
您提取的两个列都是“军团”。据我所知,如果使用相同的名称,则无法执行此操作。 如果您使用“r.name as Regiment_1,s.name as Regiment_2”之类的内容,那么会将值带到两列。
当你说,你想要一列中的两列, 例如:我们可能在两列中有first_name和last_name。现在,您希望将两个列值都显示在一列中以显示整个名称
可以通过此>完成SELECT CONCAT(first_name,'',last_name)AS FullName;