在SQL语句中将不明确的列左键联接到一列中?
是否可以在T-SQL语句中将两列性质相同的列在SQL语句中将不明确的列左键联接到一列中?,sql,sql-server,Sql,Sql Server,是否可以在T-SQL语句中将两列性质相同的列LEFT JOIN,即将t2.Name和t3.Name合并为一列(dataproperty)Name SELECT t1.ID, t1.RowID, t2.name, t3.Name FROM MasterTable T1 LEFT OUTER JOIN RightTable1 T2 ON T1.RowID = T2.ID LEFT OUTER
LEFT JOIN
,即将t2.Name
和t3.Name
合并为一列(dataproperty)Name
SELECT t1.ID,
t1.RowID,
t2.name,
t3.Name
FROM MasterTable T1
LEFT OUTER JOIN RightTable1 T2
ON T1.RowID = T2.ID
LEFT OUTER JOIN RightTable2 T3
ON T1.RowID = T3.ID
WHERE t1.ID= " & ID & ";
…还是我必须将表加载到单独的数据集中,并通过编程方式(针对每个…下一个)将它们连接到新的数据集中
问候,
伦敦银行同业拆借利率取决于你所说的“加入”是什么意思——这里有几种可能性: 如果一个为空,另一个不为空,请使用
ISNULL
:
SELECT DISTINCT
t1.ID,
t1.RowID,
ISNULL(t2.name, t3.Name) Name
FROM MasterTable T1
LEFT OUTER JOIN RightTable1 T2 on T1.RowID = T2.ID
LEFT OUTER JOIN RightTable2 T3 on T1.RowID = T3.ID
如果要连接它们,请执行以下操作:
SELECT DISTINCT
t1.ID,
t1.RowID,
t2.name + t3.Name Name
FROM MasterTable T1
LEFT OUTER JOIN RightTable1 T2 on T1.RowID = T2.ID
LEFT OUTER JOIN RightTable2 T3 on T1.RowID = T3.ID
如果需要两行(一个并集):
请注意,DISTINCT是必要的,因为除非您可以关联T2和T3,否则您基本上会在T2和T3之间进行交叉连接(笛卡尔积),因此您需要消除创建的重复项。您可以将两个字段连接成一个字段,而不要忘记放置isnull子句。我想你们可以在两个表之间连接起来……啊,我从来没有这样做过,但我在下面的回答中看到了一个例子,谢谢。我在操作中没有看到交叉连接。太好了!在我的例子中,始终只有一个值,仅在一个表中(有5个表要连接!)。我将使用ISNULL来处理dbnull值。非常感谢…在我的例子中没有重复项,因为在我加入的5个表中ID是唯一的,这意味着总是只有一个条目(在5个表中的某个地方)与ID匹配。这并不容易,但工作结果是:CONCAT(IFNULL(t2.name.)、IFNULL(t3.name.))作为名称。很抱歉,这个数据库是MySQL,不是MS SQL(我正在处理这两个数据库,并且在最初的帖子中犯了错误)。
SELECT DISTINCT
t1.ID,
t1.RowID,
t2.name + t3.Name Name
FROM MasterTable T1
LEFT OUTER JOIN RightTable1 T2 on T1.RowID = T2.ID
LEFT OUTER JOIN RightTable2 T3 on T1.RowID = T3.ID
SELECT DISTINCT
t1.ID,
t1.RowID,
t2.Name
FROM MasterTable T1
LEFT OUTER JOIN RightTable1 T2 on T1.RowID = T2.ID
UNION ALL
SELECT DISTINCT
t1.ID,
t1.RowID,
t3.Name
FROM MasterTable T1
LEFT OUTER JOIN RightTable2 T3 on T1.RowID = T3.ID