如果mySQL中选择的值为“ 0”,则从另一列中选择

Kuroneko海盗:

我有一个类似于下表的表格

id | mainID | subID
1  |   11    |   0
2  |   12    |   0 
3  |   13    |   20
4  |   13    |   21
5  |   15    |   0

如果subID为0,我需要选择所有的“ mainID”。如果subID不为0,则选择subID而不是mainIdD

结果表

id | resultId
1  | 11
2  | 12
3  | 20
4  | 21
5  | 15

subID列的值不为null,因此在这里不能使用ifnull。可以仅使用sql查询来完成此操作吗?并且不要在php中使用write函数。我知道可以在php中完成,但我需要sql查询本身中的数据。

戈登·利诺夫(Gordon Linoff):

您可以使用一个case表达式:

select id, (case when subid = 0 then mainid else subid end) as resultid
from t;

对于您的示例数据,greatest()也可以使用:

select id, greatest(subid, mainid) as resultid

或者,如果您将“ 0”值存储为NULL而不是0,那么coalesce()最好:

select coalesce(subid, mainid) as resultid

如果“ 0”表示没有匹配值,则NULL很有意义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MySQL:如果另一列在联结表中具有两个确定的值,则从一列中选择不同的值

SQL:一旦被另一列分区,则从非唯一列值中选择行

如果第一行为 0,则从 DataFrame 中选择列

如何从一列中选择值的前2%,如果为true,则写入1,如果为false,则写入0?

从列中选择 MAX 值并从另一列中选择相应的值

从另一列中选择所有包含值的

如果匹配内容,则从另一个表中选择列

熊猫,从一列中选择最大值,从另一列中选择最小值

SQL如果字段为“ *”,则从另一个表中选择

如果原始表为空,则从另一个表中选择

MYSQL在按另一列排序的列中选择特定数量的重复值

如何从mysql的同一列中选择不同的值

SQL根据另一列中的值从一列中选择值

从一列中选择在另一列中共享值的值

在mysql中选择具有相同值的另一列的行

从一列中选择一个值将过滤另一列

如果存在,则从表中选择,否则从 oracle 中的另一个表中选择

PHP / SQL-从所有列中选择,其中另一列= 0

从列中选择最高值,并从多列中的另一列中选择相应的值

MYSQL-从列中选择一个值,或(如果未提供值)选择全部

如何从表中选择多个值并动态添加它们以选择另一列

如果另一列包含所有请求的值集,如何从表中选择特定列?

从同一组中选择平均值,在另一列中选择最大值,另一列

SQL Server 2005 从表 1 和表 2 中选择数据,但如果表 2 的列 1 值为空,则从表 3 中选择数据

从python中的另一列groupby之后的列中选择一个值

创建视图,在一个列中选择与另一列相关的最大值

如何从另一列的最高不同值中选择列值

sql:使用单个查询在另一列中选择具有相同列值的行

熊猫:从索引中选择与另一列中的值相对应的列