SQL IF - ELSE语句

时间:2012-06-12 17:22:47

标签: mysql sql if-statement

我有一张这样的表:

+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| ID    | bigint(20) | NO   | PRI | NULL    |       |
| view  | bigint(20) | NO   |     | NULL    |       |
+-------+------------+------+-----+---------+-------+

是否可以使用SQL的IF-ELSE语句执行此操作?

  1. 检查表格中是否有ID = 1行
  2. 如果有,请将视图列增加1。
  3. 如果没有,请在ID = 1
  4. 的表中插入新行

    它应该是这样的:

    IF((SELECT COUNT(ID) FROM wp_viewcount WHERE ID=1) == 0)
    BEGIN
    INSERT INTO wp_viewcount VALUES (1,1)
    END
    ELSE
    BEGIN
    UPDATE wp_viewcount SET view=view+1 WHERE ID=1
    END
    

3 个答案:

答案 0 :(得分:3)

以下SQL语句将使用on duplicate key语法生成所需的IF - ELSE逻辑。

insert into wp_viewcount values(1,1) on duplicate key update view=view+1;

答案 1 :(得分:2)

您只能在存储过程中使用MySQL的if。例如:

DELIMITER //

CREATE PROCEDURE `test_procedure` (IN wp_id INT)
BEGIN
IF( (SELECT COUNT(*) FROM wp_viewcount WHERE id = wp_id)<1) THEN
    INSERT INTO wp_viewcount(id,view) VALUES (wp_id,1);
ELSE
    UPDATE wp_viewcount SET view=view+1 WHERE ID=wp_id;
END IF;
END //

根据您的使用案例,MySQL的INSERT ... ON DUPLICATE KEY UPDATE可能会为您提供更好的服务。

答案 2 :(得分:1)

为什么不使用

if not exists (select * from wp_viewcount where id = 1)
begin
    --insert logic
end
else
begin
    --update logic
end