在C ++中,你可以这样做:
T.x = (T.y > 1 && (T.x - T.y < 0)) ? 0 : (T.x - T.y)
以[几乎]普通英语,
if T.y > 1 and T.x-T.y < 0 then
set T.x to 0
else
set T.x to T.x-T.y
是否可以仅使用SQL执行相同的操作,而不使用存储过程或触发器?
答案 0 :(得分:11)
使用CASE
声明:
CASE WHEN T.y > 1 AND (T.x - T.y) < 0 THEN 0 ELSE (T.x - T.y) END
答案 1 :(得分:5)
是的,可以看一下documentation,它说:
IF(expr1,expr2,expr3)
如果expr1为TRUE(expr1&lt;&gt; 0且expr1&lt;&gt; NULL),则IF()返回 表达式2;否则它返回expr3。
这个未经测试的代码应该是你的情况:
SELECT IF(((T.y > 1) and (T.x-T.y < 0)), 0, (T.x-T.y))
答案 2 :(得分:0)
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list] ...
[ELSE statement_list]
END IF
查看本手册了解详情control-flow-functions
答案 3 :(得分:0)
简化为:
SELECT *,
CASE WHEN (y > 1 AND x < y) THEN 0 ELSE (x - y) END AS result
FROM T;