繁体   English   中英

如何基于其他列的结果运行SELECT语句?

[英]How to run SELECT statement based on the results of other columns?

我有一个这样的MySQL表:

CREATE TABLE `my_table` (
  `col1` varchar(45) DEFAULT '',
  `col2` varchar(45) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

它包含以下数据:

在此处输入图片说明

如何使用SELECT语句生成如下结果:

在此处输入图片说明

check列内容的含义如下:

`both` when both `col1` and `col2` have values.
`left` when only `col1` has a value.
`rightest` when only `col2` has a value.
`empty` when both `col1` and `col2` has empty value.

我认为查询看起来像这样的东西

# something must be used to replace ???
SELECT (???) AS check, col1, col2 FROM my_table;

哪里??? 应该更改为其他内容。

表达式时使用CASE WHEN

SELECT CASE WHEN col1 = '' and col2='' then 'Empty'
            WHEN col1 = '' then 'Right'
            WHEN col2='' then 'Left'
            else 'Both' end as 'Check',
        col1, col2 FROM yourtablename

以下是查询-

select
col1, col2,
case 
when (nvl(col1) or col1='') and (nvl(col2) or col2='') then 'empty'
when (nvl(col1) or col1='') and (col2<>'') then 'right'
when (col1<>'') and (nvl(col2) or col2='') then 'left'
else 'Both' end as col3 from mytable

CASE WHEN可以满足您的需求:

SELECT CASE WHEN col1 = '' 
            THEN CASE WHEN col2 = '' 
                      THEN 'empty'
                      ELSE 'right'
                 END
            ELSE CASE WHEN col2 = ''
                      THEN 'left'
                      ELSE 'both'
       END AS check,
       col1, col2 FROM my_table

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM