|
我有两张桌子,如下所示:
) n# F& J' h( H[ol]serial_table
7 n. y6 j- ?$ \' ]id CHARACTER VARYING(20),serial_key CHARACTER VARYING(20),% O, M* D3 u+ p( ^
PRIMARY KEY(id,serial_key)serial_rate:
, |* s- r8 K1 ]+ u8 a4 Bid CHARACTER VARYING(20),serial_key CHARACTER VARYING(20),
4 L2 X7 y0 v6 n) R6 D6 z- C6 }; G$ orate NUMERIC,( g c( d. I- q( D4 k
PRIMARY KEY(id,serial_key),% S/ q% U' a, I7 L! Q! x5 S
FOREIGN KEY (id,serial_key) REFERENCES serial_table(id,serial_key)$ G0 G, i5 ^) N* X% t$ p* d
[/ol]现在我想更新,serial_rate.rate并serial_table.serial_key从单个SQL查询,如:$ {7 j. I( i+ X, R: Y5 U( o) j; [
UPDATE inventory.serial_table AS s JOIN inventory.serial_rate AS r ON (s.id,s.serial_key) = (r.id,r.serial_key) SET s.serial_key = '0002',r.rate = 22.53WHERE (s.id,s.serial_key) = 我知道这是不正确的。有一种可能的方法, 因为我想用这个句子PreparedStatement在Java中创一个?
; ~) R9 ?# _0 f3 m- v编辑
/ Y% k5 z0 v# x0 F- u2 E; O这个问题不在PreparedStatementsJava中。是关于它的SQL语法,我希望在创建中SQL将其作为参数传递PreparedStatement。3 T) P& [( `; O) z' q$ g4 u
我不想要任何答案PreparedStatement。
/ p$ U& x5 P6 c) q* z& j
5 l, p2 \, w8 @ H x1 Q) C 解决方案: G/ X4 X7 i! |+ }/ u1 j; y
这是CTE但我不知道如何把它包装成准备好的东西Java东西中)
; A/ h1 B+ I0 A5 f! xWITH src AS ( UPDATE serial_rate SET rate = 22.53,serial_key = WHERE serial_key = '002' AND id = RETURNING * )UPDATE serial_table dstSET serial_key = src.serial_keyFROM src-- WHERE dst.id = src.id AND dst.serial_key = '002'WHERE dst.id = '01' AND dst.serial_key = |
|