【发布时间】:2015-03-25 20:59:05
【问题描述】:
我想要实现的是, 如果查询返回的行数:
SELECT count(*) FROM `games` WHERE cateID=2 AND active=1
等于 0,我想运行插入查询:
INSERT INTO games(cateID ,time,users,active)
VALUES ('2', '1', '0', '1')
我尝试使用这样的案例:
SELECT CASE WHEN SELECT count(*) FROM `games` WHERE cateID=2 AND active=1)=0
THEN INSERT INTO games(cateID ,time,users,active)
VALUES ('2', '1', '0', '1')
END
但它返回错误为:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT count(*) FROM `games` WHERE cateID=2 AND active=1)=0
THEN INSERT INTO' at line 1
注意:两个查询单独执行时,执行时不会出现任何错误。 我如何做到这一点?
编辑:
也用 IF 试过这个,
SELECT if(count(*)==0,INSERT INTO games(cateID ,time,users,active)
VALUES ('2', '1', '0', '1')) FROM `games` WHERE cateID=2 AND active=1
仍然给出同样的错误。 编辑 2: 根据建议的评论,
INSERT INTO games(cateID ,time,users,active)
select '2','2','0','1'
where (SELECT count(*) FROM `games` WHERE cateID=2 AND active=1) <= 0
还是报错。
【问题讨论】:
-
确实尝试过。查看编辑2。
标签: mysql