我正在尝试从表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
我不确定你的问题;请试试这个:
小提琴手
也许您可以向 dbfiddle 添加一些数据...