2015-09-25 20 views
0

仅当所有其他行在该表中的状态为0时才试图插入mysql条目。只有当该表中的所有其他行的值为0时,才插入mysql行

例如。比赛表中共有350个联赛排,状态= 0,1排,状态= 2。当查询运行时,我希望它检查只有一行存在与状态= 2,如果它确实然后执行插入,如果不是不。

我想这是一个解决方案,但它失败:

INSERT INTO newTournaments(`start`,`registration`,`end`,`prize`,`state`) 
VALUES('1','1','1','1','1') 
where (SELECT id FROM newTournaments WHERE state != 0) = tournamentId; 
+0

以供将来参考,如果您向我们展示从查询中获得的结果和/或错误,也会有所帮助。 –

+0

@Tom Starkie,要么“我试图插入一个mysql条目,只有当所有其他行在该表中的状态= 0。”或者“当查询运行时,我希望它检查只有一行存在与状态= 2,如果它确实然后执行插入,如果不行的话。” ? –

+0

您的插入语句顺利失败,因为INSERT语句不能有WHERE子句。 –

回答

1

这似乎的情况下通过select语句插入会有所帮助:

INSERT INTO newTournaments(`start`,`registration`,`end`,`prize`,`state`) 
SELECT '1','1','1','1','1' 
FROM (select 'a') a 
WHERE (SELECT count(*) FROM newTournaments WHERE state = 2) = 1 

sqlfiddle

+0

太棒了。非常感谢你。 – MonkeyAtWork

+0

@TomStarkie,我做了更新,以便只插入一行(当然,如果where子句中的条件被验证)。 –

相关问题