sql - 如何使用声明将 where 子句和/或 order by 添加到更新语句
问题描述
我目前正在使用下面的声明更新语句进行测试。这将从 1 到 501 以数字方式更新我的 StackCustomerAltID。但我需要弄清楚如何使用我的客户列以 asc 顺序添加 where 子句或订单。
这是我需要添加的 where 子句(其中 DelFlg = 0 和 Customer <> 'Spare')
declare @Var int
set @Var = 0
update StackCustomer
set @Var = StackCustomerAltID = @Var + 1
解决方案
只是不要这样做。该行为未记录在案,可能会给您带来非常奇怪的结果。改用ROW_NUMBER
:
WITH CTE AS(
SELECT StackCustomerAltID,
ROW_NUMBER() OVER (ORDER BY Customer) AS RN
FROM dbo.StackCustomer)
UPDATE CTE
SET StackCustomerAltID = RN;
推荐阅读
- javascript - Angular:(重新)激活谷歌分析(用户同意所有cookies后的cookies
- google-apps-script - 自动突出显示 Google Docs 中某些单词的脚本?
- javascript - MUI createTheme 未正确将主题传递给 MUI 组件
- qt - ContainsMouse 在父更改上给出了不正确的值
- javascript - 如何创建公司团队和名称列表的二维数组,以便循环遍历它?
- c++ - 有没有办法优化/减少这个分配变量的顺序?(C++)
- android - 与 else 一起使用时,dataSnapshot.value 为 null,否则为
- python - exit() quit() 或 sys.exit() 在 Jupyter 中不起作用
- mysql - mysql 的 PATH 保存在 .zshrc 中,但未显示在 echo $PATH 中。mysql --version 得到“找不到命令”错误
- spring-security - Spring oauth2授权服务器在令牌中添加角色用户