同一列的 2 个条件必须由用户 ID 拥有,然后必须更新其中一个

2conditions of the same column which have to be owned by user id and then one of them has to be updated

我正在尝试从 table Titem 列类型更新类型并将其设置为新 ID,同时让它检查用户 ID 是否拥有这 2 个项目。然而,这是我做错的部分,我不知道如何使用其中一种项目类型,因为它只是在更新另一种类型时使用,因为它们都共享类型作为参考。 我知道我的使用就像有人会说的古董连接,除此之外我的目标是让它工作而不是优化,我不是开发人员,也不是任何类型的编码器。我是一个新手,只有一些基本的了解。由于现在一切都已清除,如果有人能给我一个这个工作的例子或如何让它工作,我将不胜感激。它一直工作到几乎被忽略的 Exist 部分。 queue 被完全执行,但是就像我最后说的那样并被忽略。没有消息: 这几乎就是 works/gets 执行的内容:

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 有第 3 个项目 ID,则 queue 应该被执行 -> 将旧 ID 更新为 newid。 这是我解释 it.What 我在下面尝试过的一种方式是我在检查 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 查询是无可非议的,它变得多么混乱,问题是无论该项目是否存在,只要它在数据库中出现一次,它就无关紧要,这会导致 queue 对添加所有 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';

感谢来自 dba.stackexchange

的@MBuschi