2012-01-26 33 views
1

我对SQL Server相对比较陌生,所以我希望你能帮上忙。左连接后的SQL Server MERGE列?

基本上我有两个信息表。第一个看起来像:

  • 表1 [ID, Name]
  • 表2 [FKID, ID, Name]

我想去做一份声明:

SELECT table1.Name, table2.Name 
FROM table1 
LEFT JOIN table2 ON table2.FKID = table1.ID 

这导致例如:

['Name 1a', 'Name 2a'] 
['Name 1b', NULL] 
['Name 1c', NULL] 

但我要的是只选择一列,要么是Name 1xName 2x如果它不为空(有左侧没有按键匹配连接)。

我想象一下,使用我的编程语言解决这个问题的典型答案是,但在Visual Web Developer中使用GridViews和所有这些废话证明这是非常困难的,所以如果数据库解决方案是非常有用的。

非常感谢!

回答

6
SELECT coalesce(table1.Name, table2.Name) as YourName 
FROM table1 
LEFT JOIN table2 ON 
table2.FKID = table1.ID 

COALESCE()将返回第一个NOT NULL值。这是你在找什么?

+2

你大概意思写“聚结”(编辑无法修复不少于6个字符:) – PinnyM

+0

@PinnyM的感谢!固定!!这总是一个奇怪的函数来写。 :) – 2012-01-26 16:01:14

+0

嗯,我确实看过这个,但后来我想如何将这个应用到我的问题,当table1的值不为空第一次。也许如果我在COALESCE中交换它们,那么如果它存在,我会首先获取table2的值? – deed02392

0

COALESCE()将合并行。如果要合并列尝试类似:

SELECT CONCAT(ColA, ColB) AS ColAB