MySQL CASE WHEN的高階用法

2022-07-08 01:24:11 字數 2370 閱讀 8848

case

when condition1 then

result1

when condition2 then

result2

when conditionn then

resultn

else

result

end;

mysql>

select

*from

person;+--

--+---------+--------+------+--------+

| id | country | name | age | gender |+--

--+---------+--------+------+--------+|3

| china | tim |10|

1||7

| usa | kobe |10|

1||8

| usa | james |20|

1||9

| usa | grace |30|

0||10

| japan | monica |40|

2|+--

--+---------+--------+------+--------+

mysql>

select id, `name`, case gender when

1then'男

'when

0then'女

'else'其他

'end

as gender from

person;+--

--+--------+--------+

| id | name | gender |+--

--+--------+--------+|3

| tim | 男 ||7

| kobe | 男 ||8

| james | 男 ||9

| grace | 女 ||10

| monica | 其他 |+--

--+--------+--------+

根據不同國家統計使用者的性別

mysql>

select

country,

->

sum(case

when gender=

1then

1else

0end) as

male,

->

sum( case

when gender=

0then

1else

0end) as

female,

->

sum(case

when gender>

1then

1else

0end) as

unknown

->

from

person

->

group

bycountry;+--

-------+------+--------+---------+

| country | male | female | unknown |+--

-------+------+--------+---------+

| china |1|

0|0|

| japan |0|

0|1|

| usa |2|

1|0|

+---------+------+--------+---------+

簡單case函式

update

person

set `status` =

case

idwhen

1then

1when

2then

0when

3then

0when

4then

1end

where id in (1, 2, 3, 4)

注意事項:一定要有where id in的限制,否則不在when中的記錄就會被置為null

case搜尋函式

update

person

set `status` =

case

when id%2=

1then

1when id%2=

0then

0end

區別:簡單case函式只能實現相等條件判斷,case搜尋函式適合複雜條件判斷,比如大於、小於等

mysql case when語句的使用

case具有兩種格式。簡單case函式和case搜尋函式。簡單函式 case col name when value1 then result1 else default end 搜尋函式 case when expr then result1 else default end 簡單函式的運用 ca...

Mysql casewhen的三種用法

case when 的三種用法 1.case 字段 when 欄位的具體值。select a.case name when 流浪 then 法師 else 戰士 end as 型別 from c 20170920 a 2.case when 字段,這個可以對欄位進行取範圍。select a.case...

SwipeRefreshLayout的高度測量

感謝此作者的分享 若swiperefreshlayout的子布局為乙個線性布局linearlayout,紅色背景 黃色背景 黑色背景 顯示結果確實這個樣子的 我們設定100dp顯然沒起到作用 原來是子view被強制設定成了swiperefreshlayout的高度 自此提示 若使用swiperefr...