Sql server sql server更新与自身内部联接相结合
我在SQL SERVER中发现以下Sql server sql server更新与自身内部联接相结合,sql-server,sql-update,Sql Server,Sql Update,我在SQL SERVER中发现以下UPDATE语句有问题 UPDATE table_a SET table_a.More = -1 FROM table_a INNER JOIN ( SELECT column1, COUNT(*) AS More FROM table_a GROUP BY column1 ) AS table_b ON table_a.column1 = table_b.column1 请注意,内部联接部
UPDATE
语句有问题
UPDATE
table_a
SET
table_a.More = -1
FROM
table_a
INNER JOIN
( SELECT column1, COUNT(*) AS More
FROM table_a
GROUP BY column1 ) AS table_b
ON
table_a.column1 = table_b.column1
请注意,内部联接部分使用表本身。在此更新之后
我希望一些行的更多
等于-1
。但我只得到了1
s。我100%确信column1
中有重复项。我错过了什么
我发现的问题是有人将列
More
定义为bit
类型 I这里的问题是数据类型,在位类型中只能有1、0或NULL。将数据类型更改为int请提供您的示例输入。我发现了问题<代码>更多被一些人定义为位
浪费了我宝贵的三个小时!嗨,John,你能回答你自己的问题并提供你如何解决这个问题的细节吗?这可能会帮助其他陷入这个问题的人。啊,难以捉摸的数据类型问题。我最近开发了很多导入存储过程,并且经常遇到这种情况。在你花更多的时间之前找到它,做得很好!真糟糕!感受你的痛苦。应该给使用bit的人一个严厉的谈话机会——smallint就在那里,当事情(不可避免地)发生变化时,它具有更大的灵活性!)