想象一下如下表: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