繁体   English   中英

如何从不同的表SQL Server添加两个字符串列?

[英]How to add two string columns from different tables SQL Server?

我试图将char数据类型的两列加在一起,以便将其代码与描述结合起来。

table1包含了我需要的所有数据,我仅引用table2以获得描述。

例如,table1具有列:

Code

1
2

表2包含列:

Code      Description

1         Football
2         Soccer

我基本上是想写一个查询,我可以在其中显示一列

1 - Football
2 - Soccer

我努力了:

SELECT 
    a.Code + ' - ' + b.Description
FROM table1 a
LEFT JOIN table2 b
ON a.Code = b.Code

尽管这样做确实将各列加在一起,但由于某种原因,由于某些原因,它还会产生很多重复的行。

基本上,我只是想要table1中的任何代码,以匹配table2中的代码并带来该Description。

在第二张表为null的情况下使用合并,在避免重复的情况下使用distinct合并

SELECT distinct a.Code +' - ' + coalesce(b.Description,'')
FROM table1 a
LEFT JOIN table2 b
ON a.Code = b.Code

or try like below and i dont think you needed join you can do it just by using 2nd tabale
SELECT 
    b.Code ||' - ' || b.Description)
from
table2 b

您可以使用ISNULL处理来自table2的缺失值:

SELECT 
    a.Code + ISNULL(' - ' + b.Description, '')
FROM table1 a
LEFT JOIN table2 b
ON a.Code = b.Code

使用“左联接”,您可以获得表A中可能不存在于表B中的值。要消除重复项,您可以尝试

SELECT DISTINCT
    a.Code + ' - ' + b.Description
FROM table1 a
LEFT JOIN table2 b
ON a.Code = b.Code

要么

SELECT 
    a.Code + ' - ' + b.Description
FROM table1 a
LEFT JOIN table2 b
ON a.Code = b.Code
GROUP BY a.Code, b.Description

table1和table2之间是什么关系? 我看到上面的查询返回重复项的唯一方法是:如果table1和table2之间的关系是1:Many。 意味着表1中的一行可以匹配表2中的多行。

  1. 即使在表2中没有相应的描述,您是否需要获取表1中存在的代码? 如果是这样,请使用如下所示的LEFT JOIN。
    • 如果table2具有直接重复项,则使用DISTINCT将删除
      最终结果重复:
     SELECT DISTINCT a.Code + ' - ' + COALESCE(b.Description, '') FROM table1 a LEFT JOIN table2 b ON a.Code = b.Code; 
    • 如果一个代码在表2中具有多个不同的描述,则由于表中数据的性质,通过运行上述查询,您的最终结果集应针对同一代码具有多个行,但具有不同的描述。
  2. 仅当表2中有相应描述时,才需要获取表1中存在的代码吗? 如果是这样,请使用如下所示的INNER JOIN。
     SELECT DISTINCT a.Code + ' - ' + b.Description FROM table1 a INNER JOIN table2 b ON a.Code = b.Code; 

暂无
暂无

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

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