【发布时间】:2018-12-12 14:24:15
【问题描述】:
我有如下查询
SELECT cap_id FROM cap_master WHERE
(cap_type = 'Type1' AND cap_desc = 'CapDesc1')
OR (cap_type = 'Type2' AND cap_desc = 'CapDesc2')
OR (cap_type = 'Type3' AND cap_desc = 'CapDesc3')
OR (cap_type = 'Type4' AND cap_desc = 'CapDesc4')
order by cap_type,cap_desc
这会根据 where 条件返回多行,我正在寻找的是一个不返回任何行的条件,我应该有一个默认值,比如“0”。截至目前,我没有得到任何行。
例如,如果第 3 个条件 (cap_type = 'Type3' AND cap_desc = 'CapDesc3') 不匹配,我希望得到如下输出:
23
34
0
45
我检查了给出的解决方案,例如
Return a value if no rows match
Return Default value if no row found -mysql
但似乎它们不适用于返回的多行。任何指针将不胜感激。
这里有一个Fiddle 可以玩。
【问题讨论】:
-
如果您发布示例数据和预期结果会有所帮助,最好是作为 SQL Fiddle。
-
如果您有一个包含所有可能类型的引用表,那么您可以通过
cap_type执行OUTER JOIN。所以你会知道缺少哪个类型 -
在提问中添加了小提琴。
-
是否有另一个表包含所有可能的类型? @pranav
-
不,我们没有,这实际上是一个主表。