Sql-Server-2008-R2
如何修復此 SQL 伺服器查詢 2008r2
我正在嘗試從表Titem列類型更新類型並將其設置為新 ID,同時讓它檢查使用者 ID 是否擁有這 2 個項目(我們正在更新的舊 ID,第二個 ID這只是為了檢查 user_id 是否擁有它)。然而,這是我做錯的部分,我不知道如何使用其中一種項目類型,因為它只是在更新另一種項目類型時,因為它們都共享類型作為參考。我知道我使用的就像有人會說古董連接一樣,除了我的目標是讓它工作而不是優化之外,我不是開發人員,也不是任何類型的編碼器。我是新手,基本了解不多。由於現在一切都已清除,如果有人能給我一個有關此工作的範例或如何使其工作,我將不勝感激。它一直有效,直到幾乎被忽略的 Exist 部分。隊列被完全執行,但是就像我最後說的那樣被忽略了。沒有消息:這幾乎是有效的/被執行的:
UPDATE TItem SET type= 'newid' FROM Titem x, TCharacter y WHERE x.char_id = y.id and x.type = 'oldid' table1 'tcharacter' | id | create date | mode | Table2 'titem' | type | Attr | char_ID |
id=char_id 這是他們共享相同數據的唯一列目標:如果 USER_ID 有 3rditem id,則隊列應該被執行 -> 將舊 id 更新為 newid。這是我解釋它的一種方式。我在下面嘗試的是在檢查 user_id 是否存在第二個 itemid 時嘗試更新 ID。我試過的:
UPDATE TItem SET type= 'newid' FROM Titem x, TCharacter y WHERE x.char_id = y.id and x.type = 'oldid' and EXISTS (SELECT type = '2nd id' FROM Titem WHERE x.char_id = y.id);
我嘗試過的新 IF 查詢是無可非議的,它變得多麼混亂,問題在於,無論該項目是否存在,只要它存在於數據庫中一次,它就無關緊要,這會導致每個隊列都被執行記錄添加所有 x 和 y 規範顯然沒有任何結果,我做錯了。
IF EXISTS (SELECT 1 FROM Titem as x, TCharacter as y WHERE x.type = '2nd id' AND x.char_id = y.id) BEGIN UPDATE Titem SET type = 'mewid' FROM dbo.TItem AS x, TCharacter AS y WHERE x.char_id = y.id and x.type = 'oldid' END
我不確定你的問題;請試試這個:
UPDATE x SET x.type= 'newid' FROM Titem AS x INNER JOIN TCharacter AS y ON x.char_id = y.id INNER JOIN Titem AS z ON z.char_id = y.id WHERE x.type = 'oldid' and z.type = '2nd id';
也許您可以向 dbfiddle 添加一些數據…