,所以我試圖跟隨做這樣的查詢(「我不能去工作,要麼...」)這tutorialSQL - 如果存在問題
insted的惰性行,如果不存在更新行
IF EXISTS (SELECT * FROM Table1 WHERE Column1='SomeValue')
UPDATE Table1 SET (...) WHERE Column1='SomeValue'
ELSE
INSERT INTO Table1 VALUES (...)
我想要做這樣
UPDATE Table1 SET (...) WHERE Column1='SomeValue'
IF @@ROWCOUNT=0
INSERT INTO Table1 VALUES (...)
做這樣應該以避免出現兩個索引搜索的好處。
SQL
UPDATE ctc_portfolio_coins SET (ctc_portfolio_coins_amount = 100) WHERE ctc_portfolio_coins_portfolio_fk = 1
IF @@ROWCOUNT=0
INSERT INTO ctc_portfolio_coins (ctc_portfolio_coins_portfolio_fk, ctc_portfolio_coins_coin_fk, ctc_portfolio_coins_amount) VALUES (1, 1, 100)
錯誤
#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 '(ctc_portfolio_coins_amount = 100) WHERE ctc_portfolio_coins_portfolio_fk=1
IF ' at line 1
誰能告訴我什麼是布萊恩也許會告訴我我做錯了什麼?
「誰能告訴我什麼是布萊恩,也許告訴我我做錯了什麼」您錯誤地認爲MS-SQL是MySQL服務器。 –
請分享您的表作爲文本數據表或SQL語句(PHPMyAdmin可以導出表爲SQL非常eazy)..並更好地解釋您的要求,而不是關閉不可用的SQL代碼...您使用的列不存在於您的表中.. –
Raymond想要說的是您正在關注Microsoft爲SQL Server提供的教程,但您使用的是MySQL。儘管SQL是一種標準,但每個DB服務器對於標準以外的部分都有不同的實現(有時它們並未完全實現該標準)。在這種情況下,「IF EXISTS()」方法和「@@ ROWCOUNT」方法只能在SQL Server中使用,「ON DUPLICATE KEY」方法只能在MySQL/MariaDB中使用。 –