我在SQL方面不太好,星期一,我们昨晚举办了一场派对,我无法直接思考,我需要你的帮助。
如果我在sql表中有数据。类似的东西:
ModelName Color Garageld
BMW Black NULL
Mercedes Red NULL
Audi Yellow NULL
BMW Green 1
Mercedes Blue 1
现在使用LINQtoEntities我需要获取id == 1的车库的所有记录,它应该组合记录 - 如果有为车库和汽车定义的颜色 - 得到它,如果没有,请采取任何颜色都是NULL
所以garageId == 1的结果集应该是:
Audi Yellow
BMW Green
Mercedes Blue
答案 0 :(得分:1)
我通过使用从默认(null)车库条目到车库1条目的外部联接来完成此操作。使用COALESCE(),它是一个返回其第一个非null参数的标准SQL函数。
SELECT dflt.ModelName, COALESCE(g.Color, dflt.Color) AS Color
FROM mytable AS dflt
LEFT OUTER JOIN mytable AS g
ON dflt.ModelName = g.ModelName AND g.GarageId = 1
WHERE dflt.GarageId IS NULL
当找不到给定模型的车库1条目时,外连接使所有列为g.*
为空,因此COALESCE()将跳过g.Color并使用dflt.Color代替。