2012-01-26 60 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