我最近遇到一個mysql的問題!
列如:update goods set rate=(case id when 1 then 0.9 when 2 then 0.8 when 3 then 0.5 else rate),money=price*rate where id in(1,2,3); 這樣的一個sql陳述句,rate在執行前都是1,以前計算的結果都是正確的,最近不知道是怎么回事,計算的結果卻去不正確,rate的值是沒有執行的值去計算的,結果導致money的計算結果是1*price,結果折扣和金額對應不上.急需求解這是為什么會這樣。
uj5u.com熱心網友回復:
你select 出來 看看select
(case id when 1 then 0.9 when 2 then 0.8 when 3 then 0.5 else rate),money=price*rate where id in(1,2,3);
uj5u.com熱心網友回復:
分開執行吧,這樣效率還能提高一點。UPDATE goods SET rate=0.9,money=price*rate WHERE id = 1 ;
UPDATE goods SET rate=0.8,money=price*rate WHERE id = 2 ;
UPDATE goods SET rate=0.5,money=price*rate WHERE id = 3 ;
uj5u.com熱心網友回復:
SQL 陳述句沒有錯你看下你rate的型別,是不是不能存小數?
uj5u.com熱心網友回復:
腳本中發現以下兩個錯誤:1. as A處, A字母使用的是全解輸入
2. AS B處, 在AS B處前面的小括號里面,已經有一個AS W了
陳述句嵌套的有點多,建議使用以下形式:
select A.*
FROM score AS A
LEFT JOIN course AS AC ON A.course_id = AC.cid
LEFT JOIN score AS B ON A.student_id = B.student_id
LEFT JOIN course AS BC ON B.course_id = BC.cid
WHERE AC.cname = N'物理' AND BC.cname = N'生物'
uj5u.com熱心網友回復:
弄出來了?具體是什么情況?轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/13347.html
標籤:MySQL
上一篇:根據欄位合并相鄰行
