SQL:三元操作

Joh*_*ohn 9 mysql sql

在C++中,您可以这样做:

T.x = (T.y > 1 && (T.x - T.y < 0)) ? 0 : (T.x - T.y)
Run Code Online (Sandbox Code Playgroud)

在[几乎]普通英语中,是

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 
Run Code Online (Sandbox Code Playgroud)

是否可以仅使用SQL执行相同的操作,而无需使用存储过程或触发器?

ta.*_*.is 11

使用CASE声明:

CASE WHEN T.y > 1 AND (T.x - T.y) < 0 THEN 0 ELSE (T.x - T.y) END
Run Code Online (Sandbox Code Playgroud)


Clo*_*ble 5

是的,可以看看文档,它说:

IF(表达式1,表达式2,表达式3)

如果expr1为TRUE(expr1 <> 0且expr1 <> NULL)则IF()返回expr2; 否则返回expr3.

这个未经测试的代码应该是你的情况:

SELECT IF(((T.y > 1) and (T.x-T.y < 0)), 0, (T.x-T.y))
Run Code Online (Sandbox Code Playgroud)