2012-09-18 73 views
-1

我需要使用IF语句创建MySQL查询。这里是一个数据库模式:使用IF语句更新查询

CREATE DATABASE my_db; 
USE my_db; 
CREATE TABLE IF NOT EXISTS if_table(
    id INTEGER unsigned, 
    field_1 INTEGER unsigned, 
    field_2 INTEGER unsigned, 
    field_3 INTEGER unsigned, 
    PRIMARY KEY (id) 
); 

我怎样写一个UPDATE查询对应于下一个伪代码?

if field_2 equals 0 then field_1 = field_1 + 1 
else field_3 = field_3 + 2 
where id == 1 
+1

你的意思是更新? – xdazz

+0

为什么倒票? – ashim

回答

4

试试这个在线 IF声明

SELECT IF(field_2 = 0, field_1 + 1, field_3 + 2) AS `Result` 
FROM tableName 
WHERE ID = 1 

或者如果要更新的价值,

UPDATE tableName 
SET field_1 = IF(field_2 = 0, field_1 + 1, field_1), 
    field_3 = IF(field_2 = 0, field_3, field_3 + 2) 
WHERE ID = 1 
+0

但它不会修改表格的字段 – ashim

+0

@capoluca是否更新了我的答案? –

1

你可以有两种查询做到这一点。

UPDATE table_name SET field_1 = field_1 + 1 WHERE id = 1 AND field_2 = 0; 
UPDATE table_name SET field_3 = field_3 + 2 WHERE id = 1 AND field_2 != 0; 

如果你只想要一个查询,然后

UPDATE table_name 
SET field_1 = IF(field_2 = 0, field_1 + 1, field_1), 
SET field_3 = IF(field_2 = 0, field_3, field_3 + 2), 
WHERE ID = 1 
+2

2个查询FTW,+1 – zerkms

+1

两个查询案例更好! :) –

+1

在我的情况下,第三方可以更改数据库字段,所以如果我使用两个查询,那么有人可以在执行这两个查询之间及时更改字段。 – ashim