
[英]If 2 rows have the same ID select one with the greater other column value
[英]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.