2015-09-25 38 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子句中的條件被驗證)。 –

相關問題