回答

收藏

SQL更新数据集中的位置

技术问答 技术问答 198 人阅读 | 0 人回复 | 2023-09-13

+------------------+
/ Z) X$ l, y! ?' Y0 s% m, a. L1 y( n    | id1 | id2 | bool |
& ^6 Y9 g5 H# i' G    +------------------+
3 y% h: _5 x7 u7 p: |  {    |  1  |  1  |  F   |
; [7 m# g0 x6 s    |  1  |  2  |  F   |2 C, K, D! |5 @' p0 H
    |  2  |  1  |  F   |
  U( g" W' {2 ?. M' ?+ V    +------------------+
  D& G, R+ y1 ~7 xUPDATE table_name
- d4 P4 m8 U9 h* lSET bool = T' ]6 B: h' V' |/ H4 o
WHERE (id1, id2) IN ((1,1),(2,1)) --Need work here* ^5 M/ L4 ?$ C' c/ J
所以基本上我想选择(id1,id2)=(value1,value2)的条件。与下面的语句类似:: ^5 o& @, g7 P6 l, @! n/ s7 }1 u
WHERE id1 = value1 AND id2 = value2& t8 Z) ]* O# W" g  Q# n
但是在数组中的一组值中。这可能吗?" t1 Z1 Z# i' i( Z( ^
提前致谢
2 U# O7 F- n8 e编辑:我正在使用SQL
( X4 A$ z- L7 @Server2008。如果它不太清楚,我很抱歉。我试图将其作为存储过程,并从服务中调用它。输入将是某种数组(可变大小),并找到与两个ID连续匹配的行。
4 f" j0 Y, O4 o$ K$ N                # v1 F& x0 W# R
解决方案:
2 w2 v1 B5 N6 j& q# p                ; v- x5 b* _. G2 B. E0 |! {
; C/ \% ^* h0 q. i4 K

! N% C8 b- [0 C% x; B  z                这是在MSSql中执行此操作的方法。您需要做的就是从Id1和Id2取一个值(在本例中为VARCHAR)。在这种情况下,可以将IN语句与设置的值一起使用。另外,如果在这些字段中允许使用id1和id2中的NULL,则应考虑使用NULL(只需添加:)andid1 is not null and id2 is not null。
# ?0 r% T/ @6 r  M0 l9 {. v2 EUPDATE table_name
3 ~) {; u: A0 c+ g6 y" `* B8 v) aSET bool = T1 d8 Y* w! T# x) o5 }0 i
WHERE convert(varchar(20),id1)+','+convert(varchar(20),id2) in ('1,1','2,1')
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则