想象一下如下表:MySQL的:合併行,返回默認值
id | variant | name
-----------------------
1 | 1 | a
1 | 2 | b
1 | 3 | c
2 | 1 | d
2 | 2 | e
2 | 3 | NULL
3 | 1 | g
哪條SQL語句來完成我需要運行得到這個:
- 對於給定的ID和指定變體得到這個組合的名字。
- 但是,如果名稱爲NULL,請獲取具有給定ID但具有變體1的行的名稱(變體1的名稱永遠不會爲NULL)。
- 如果沒有給定變體的行,請再次使用變量爲1的行使用相同的ID。
- 變體1從不直接請求。
這就像倒退機制。或者也可以把它看作與變體覆蓋的行的值= 1。
實例:
- ID = 1,變體= 2:乙
- ID = 1,變體= 3:C
- ID = 2,變體= 3:d
- ID = 3,變體= 5:克
這是可能的SQL?如果該機制應用於更多領域,它表現不錯嗎?
謝謝!
更新:
請注意,我想不僅對name字段這種機制。應該有更多的列應該有相同的行爲 - 但每個列應該自己處理。
我認爲你需要添加一個多列的例子來獲得性能位的好答案。如果你的意思是應該對每個列自己進行處理,就像從變量x中獲得的一樣,如果該列的值爲空,我的回答只是額外的COALESCE,但是這可能是一個糟糕的假設。 – 2013-04-30 14:34:53