sql insert into,select,where语句

问题描述:

我想将hk_room表中的所有行复制到hk_history中,但rStatus =' - '或rStatus ='Long Stay'和rStatus ='Check Out'的行除外。sql insert into,select,where语句

' - '是rStatus属性的默认值。

我已经试过这两个查询:

INSERT INTO hk_history 
(rNo,rStatus,bs,bq,hk,ds,dq,pc,twl,fm,amt,db,mw,hkR,fo_R,svR,rDate) 
SELECT rNo,rStatus,bs,bq,hk,ds,dq,pc,twl,fm,amt,db,mw,hkR,fo_R,svR,rDate 
FROM hk_room1; 
WHERE rStatus <> '-'; 

INSERT INTO hk_history 
(rNo,rStatus,bs,bq,hk,ds,dq,pc,twl,fm,amt,db,mw,hkR,fo_R,svR,rDate) 
SELECT rNo,rStatus,bs,bq,hk,ds,dq,pc,twl,fm,amt,db,mw,hkR,fo_R,svR,rDate 
FROM hk_room1; 
WHERE rStatus = 'Long Stay' AND rStatus = 'Check Out'; 

but I got this error

+6

'hk_room1;'';'结束语句。 –

+1

确认上述不明确。如果希望where子句作为插入的一部分执行,请在'hk_room1'后删除';'。 – xQbert

+0

是你可以想出的最隐秘的列名称集合吗? – e4c5

你有一个分号befor e where在第一个查询中:

INSERT INTO hk_history 
    (rNo,rStatus,bs,bq,hk,ds,dq,pc,twl,fm,amt,db,mw,hkR,fo_R,svR,rDate) 
    SELECT rNo,rStatus,bs,bq,hk,ds,dq,pc,twl,fm,amt,db,mw,hkR,fo_R,svR,rDate 
    FROM hk_room1; 
    -------------^ 
    WHERE rStatus <> '-'; 

您需要将其删除。

要做到这一点:

想从hk_room表中的所有行复制到hk_history除非RSTATUS =行 ' - ' 或RSTATUS = '长住' 和RSTATUS = '退房'。

只需使用一条语句:

INSERT INTO hk_history 
    (rNo,rStatus,bs,bq,hk,ds,dq,pc,twl,fm,amt,db,mw,hkR,fo_R,svR,rDate) 
    SELECT rNo,rStatus,bs,bq,hk,ds,dq,pc,twl,fm,amt,db,mw,hkR,fo_R,svR,rDate 
    FROM hk_room1 
    WHERE NOT (rStatus = '-' OR 
       rStatus = 'Long Stay' and rStatus = 'Check Out' 
      ); 

您还可以短语,如:

WHERE rStatus <> '-' AND 
      (rStatus <> 'Long Stay' OR rStatus <> 'Check Out') 

然而,以前的版本似乎是你的意图更清晰。

+0

我明白了,所以问题是分号。谢谢。 – 8man

INSERT INTO hk_history 
(rNo,rStatus,bs,bq,hk,ds,dq,pc,twl,fm,amt,db,mw,hkR,fo_R,svR,rDate) 
SELECT rNo,rStatus,bs,bq,hk,ds,dq,pc,twl,fm,amt,db,mw,hkR,fo_R,svR,rDate 
FROM hk_room1 
WHERE rStatus IN ('-', 'Long Stay' , 'Check Out') 
; 

这应该有助于