+------------------+ / 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')