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';
答
你有一个分号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')
;
这应该有助于
'hk_room1;'';'结束语句。 –
确认上述不明确。如果希望where子句作为插入的一部分执行,请在'hk_room1'后删除';'。 – xQbert
是你可以想出的最隐秘的列名称集合吗? – e4c5