我有一张这样的表:
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| ID | bigint(20) | NO | PRI | NULL | |
| view | bigint(20) | NO | | NULL | |
+-------+------------+------+-----+---------+-------+
是否可以使用SQL的IF-ELSE语句执行此操作?
它应该是这样的:
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
答案 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