如何在UPDATE语句中使用if / else

时间:2013-05-01 19:58:35

标签: mysql

这是我当前的查询

UPDATE `records` SET tester1 = '$user', tester1yn = '$pass' 

我想将此更改为

UPDATE `records` SET
IF `tester1` IS NULL `tester1` = $user, AND `test1` = $pass
ELSE `tester2` = $user, `tester1yn` = '$pass'
WHERE `id` = $id

但正如我所说,这不起作用。我有一个嵌套的问题,或者我的方法是错误的吗?

基于反馈的更新

UDPATE records SET 
tester1 = if(tester1 IS NULL,'$user',tester1), 
tester1yn = if(tester1 is null, '$pass', tester1yn), 
tester2 = IF(tester1 is not null, '$user', tester2), 
tester2yn = IF(tester1 is not null,'$pass', tester2yn) 
where id = $id

仍然没有。

3 个答案:

答案 0 :(得分:2)

你有点走向错误的方向,虽然这个逻辑应该在下一个布局中(在我看来)

尝试:

UPDATE records 
SET
tester1 = if(tester1 IS NULL,$user,tester1),
tester1yn = IF(tester1 IS NULL,$pass,tester1yn),
tester2 = IF(tester1 IS NOT NULL, $user,tester2),
tester2yn = IF(tester1 IS NOT NULL,'$pass',tester2yn)
WHERE id = $id";

答案 1 :(得分:2)

我没有对此进行测试,所以不要抱它,但这应该指向正确的方向:

UPDATE records 
SET 
    tester1 = CASE WHEN tester1 IS NULL THEN '$user' ELSE tester1 END,
    test1 = CASE WHEN tester1 IS NULL THEN '$pass' ELSE test1 END,
    tester2 = CASE WHEN tester1 IS NOT NULL THEN '$user' ELSE tester2 END,
    tester2yn = CASE WHEN tester1 IS NOT NULL THEN '$pass' ELSE tester2yn END
WHERE
    id = $id

答案 2 :(得分:0)

虽然它在SQL中是可行的,但这种逻辑不应该在数据库级别发生。用户的登录,身份验证和管理(这似乎是您所追求的)应该在您的代码中完成。