繁体   English   中英

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

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

我正在尝试从表 Titem 列类型更新类型并将其设置为新 ID,同时让它检查用户 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';

来自 dba.stackexchange 的 @MBuschi 礼貌

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM