回答

收藏

使用LEFT JOIN删除

技术问答 技术问答 462 人阅读 | 0 人回复 | 2023-09-14

我想根据引用了第一个表的另一个表上存在的数据从表中删除,但是,当我将其作为SELECT语句运行时,我具有可以正常工作并显示要删除的值的代码,但是当我将其更改为删除它给了我错误,我不明白为什么它们在那里。4 A- H) I/ ~9 C/ k; b8 B
DELETE leadCustomer.* FROM coursework.leadCustomer LEFT JOIN coursework.flightBooking/ j- K7 Z9 R; U) H; Y( @5 f
ON leadCustomer.customerID = flightBooking.customerID
/ ^, K/ t2 k4 @) o( ^3 L' HWHERE leadCustomer.customerID NOT IN (
5 `; A6 P! t+ h; d8 ]+ BSELECT customerID FROM (SELECT customerID, status FROM coursework.flightBooking) AS" V6 r0 @% F* Z2 K) D' w* K
StatusCount where status IN  ('R','H') GROUP BY customerID
3 r$ l) [( q  a) Z+ |)
, |. C6 \* M3 \# X1 YAND leadCustomer.customerID = 8;; i4 \! @) w8 u  @
错误:
& }' e$ _, i! @3 \4 |9 tERROR:  syntax error at or near "leadCustomer"# F& X$ h* F5 I$ S5 G+ L; F3 T
LINE 1: DELETE leadCustomer.* FROM coursework.leadCustomer LEFT JOIN...
9 u& g5 v& l& C6 @4 Q               ^
. {8 _( _  Z4 U0 w0 N7 u% Z********** Error **********
- J! F7 `: E9 c$ m! {ERROR: syntax error at or near "leadCustomer"
8 `" v6 n- q  Q2 g! p3 t( z' GSQL state: 426018 ?; L  C' b9 H+ p/ K6 E
Character: 80 ]5 m4 Y0 S$ z3 ]% V
我正在使用postgres
0 m6 ?# f1 X% S7 r* n# ]                " W( I& z9 D# g8 I' r
解决方案:1 `* e0 Z  `9 V- u3 y
                ( [+ `0 h3 v( c5 e* V& |8 q

! \- J4 e5 Q6 w7 b6 C  R$ m5 {2 {6 y/ T4 z( t
                从我看到的地方,您实际上不需要联接即可执行此操作…6 ]% M  t1 }/ M/ u9 A; b: O
DELETE FROM coursework.leadCustomer
7 B" ~4 [; h1 R$ O/ |4 F& ?  B$ U) cWHERE leadCustomer.customerID NOT IN (
6 @' U( U' ?+ ESELECT distinct customerID FROM coursework.flightBooking  where status IN  ('R','H') ( p, I0 L+ D) f" P: X
)8 @' `' _$ O. H: \# O
AND leadCustomer.customerID = 8;
! a) W1 R! P/ J0 Y: m' A9 M  |它将删除leadcustomer中customerID为:1)与8不同的所有记录2)不在状态为“ R”或“ H”的航班列表中
, ?, ^, A+ }0 W7 [那不是你想做的吗?
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则