[英]how to subtract value from 2 columns
使用PHP我想減去50列coins
如果它們的值> 50,如果不是,則從'e-coins'中減去。
Users Table:
this is the sample
id |user |coins |e-coins|
1 |axxx |100 |100 |
2 |bxxx |100 |0 |
3 |cxxx |0 |100 |
and this is the result i want
1 |axxx |50 |100 |
2 |bxxx |50 |0 |
3 |cxxx |0 |50 |
PHP:
$db->Query("UPDATE `users` SET `coins`=`coins`-'50' WHERE `id`='".$sit['user']."'");
“ coins”列中的值可能是100,而“ e-coins”列中的值可能是100
我想從“硬幣”列中減去50,並保持電子硬幣原樣,但如果“硬幣”列中的值小於50或沒有任何值,那么從“電子硬幣”列中減去怎么辦?
假設您的colum coin數據類型是數字
$db->Query("
UPDATE `users`
SET `coins`= case when `coins` > 50 then coins - 50 else coins end,
`e-coins` = case when `coins` <= 50 then `e-coins` - 50 else `e-coins` end
where ....
可能是您的硬幣和e-coins列不是數字,所以請嘗試將其強制轉換為整數
UPDATE users
SET coins= case when (CAST(coins) AS INT coins) > 50 then coins - 50 else coins end,
`e-coins` = case when(CAST(coins) AS INT coins) <= 50 then `e-coins` - 50 else `e-coins` end
WHERE id= 'id'
似乎在直接更新的第二種情況下使用硬幣會造成一些麻煩,所以我嘗試使用帶有sublery的內部聯接來選擇情況,並且這種方法可以正常工作
update users
inner join (
select id,
case
when coins > 50
then coins - 50
else coins
end coins ,
case
when coins <= 50
then `e-coins` - 50
else `e-coins`
end `e-coins`
from users ) t ON t.id = users.id
and users.id = your_id_value
set users.coins = t.coins,
users.`e-coins` = t.`e-coins`
您可以使用IF語句來實現此條件。 例如
UPDATE `users`
SET `coins` = IF(`coins` > 50, `coins` - 50, `coins`),
`e-coins` = IF(`coins` <= 50, `e-coins` - 50, `e-coins`)
WHERE id = <your id>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.