有一个表(假设叫user)里面有id和另外三个字段(name1,name2,name3),这三个字段从业务角度讲只能有一个有值;也就是说三个字段中有一个是有值的,另外两个就是空。
如果想查询ID和不为空的那一个字段,结果显示成两列,该如何写这个SQL呢?
######找到了,用两遍isnull就可以了######回复 @554330833a : 确实是,所以我在where里面又判断了一下######回复 @大智若愚90 : isnull不能查询出不为空的字段,只是替换这个字段的值,这个空字段还是会被查询出来的######利用ifnull+concat不更好吗######不懂,sql怎么写###### switch when *** then
when *** then
end 这么判断不行么 ######果然是大神,我想不到就用isnull怎么确定只查询出不为空的字段,像上面所说的怎么样也要select name1 name2 name3三个字段,isnull只是替换这个字段查询出来的值而已######SELECT
id,
ISNULL(name1, ISNULL(name2, name3)) AS name
FROM
test
WHERE
ISNULL(name1, ISNULL(name2, name3)) IS NOT NULL
最后大概是这样解决的 ######其是你这个表结构的设计就有问题,三个字段只能有一个有值,就代表一个字段就能搞定了,还非得设计三个字段######直接 SELECT ID,CONCAT(IFNULL(NAME1,''),IFNULL(NAME2,''),IFNULL(NAME3,'')) AS NAME FROM user
######
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。