在一个表或者不同的表中,A列的某些值,用其对应的B列中的值替代
举个栗子
product_id | product_name | product_type | sale_price | purchase_price | regist_date |
---|---|---|---|---|---|
0001 | T恤 | 衣服 | 1000 | 500 | 2009-09-20 |
0002 | 打孔器 | 办公用品 | 500 | 320 | 2009-09-11 |
0003 | 运动T恤 | 衣服 | 4000 | 2800 | (NULL) |
0004 | 菜刀 | 厨房用具 | 3000 | 2800 | 2009-09-20 |
0005 | 高压锅 | 厨房用具 | 6800 | 5000 | 2009-01-15 |
0006 | 叉子 | 厨房用具 | 500 | (NULL) | 2009-09-20 |
0007 | 擦菜板 | 厨房用具 | 880 | 790 | 2008-04-28 |
0008 | 圆珠笔 | 办公用品 | 100 | (NULL) | 2009-11-11 |
product_id列中的0002我想替换成sale_price列中所对应的500,别的不变
虽然并木有什么实际意义
SELECT CASE
WHEN product_id IN (SELECT product_id FROM product WHERE product_id = '0002')
THEN sale_price
WHEN product_id NOT IN (SELECT product_id FROM product WHERE product_id = '0002')
THEN product_id
END AS a
FROM product
结果如下
a
0001
500
0003
0004
0005
0006
0007
0008
再举个栗子
厨房用具打8折,其他的打五折
SELECT product_id, product_name,product_type,
CASE
WHEN product_type='厨房用具'
THEN sale_price*0.9
WHEN product_type!='厨房用具'
THEN sale_price *0.5
END AS price
FROM product
结果如下
product_id | product_name | product_type | price |
---|---|---|---|
0001 | T恤 | 衣服 | 500.0 |
0002 | 打孔器 | 办公用品 | 250.0 |
0003 | 运动T恤 | 衣服 | 2000.0 |
0004 | 菜刀 | 厨房用具 | 2700.0 |
0005 | 高压锅 | 厨房用具 | 6120.0 |
0006 | 叉子 | 厨房用具 | 450.0 |
0007 | 擦菜板 | 厨房用具 | 792.0 |
0008 | 圆珠笔 | 办公用品 | 50.0 |