SQL的雙主鍵刪除語句

時間 2021-10-14 22:23:54

1樓:匿名使用者

對於一個表來說,主鍵可能由一個欄位構成,但是也可能有多個欄位構成。後者就是複合主鍵。你的薪資發放表中主鍵是(員工號,發放日期),即唯一確定一條記錄需要這兩個欄位的聯合取值,缺一不可。

故,所以可使用如下的語句 delete from 薪資表where ( 工號 = '***' and 發放日期 = '***date' ) or (工號 = '***' and 發放日期 = '***date' ) or ........ 複合主鍵在使用上不方便,所有一般在有複合主鍵的表中可以人為增加一個單欄位的主鍵,例如薪資發放id,這樣可以簡化sql的寫法和介面引數的傳遞,只需傳一個id值即可。不需再設計工號和發放日期欄位。

例如:delete from 薪資表where 薪資發放id in ('id1','id2','id3',...)當然in也可以用or的等價寫法。

2樓:匿名使用者

你可以將兩個主鍵轉換為字串,然後用一個特殊字元(比如@)連線起來作為一個新的字串,這種方法可以保證兩主鍵連線成的字串還是唯一的。delete from xzff where conver(char(10),ffny)+"@"+ygh in ( select (char(10),ffny)+"@"+ygh from xzff where 滿足的刪除條件); 或者:delete from xzff where conver(char(10),ffny)+"@"+ygh in ('發放日期1@員工號1','發放日期2@員工號2','發放日期3@員工號3');

3樓:匿名使用者

把兩個primary key中間加個『,』組成一個字串,然後就可以當做只有一個primary key來操作了,**如下:

delete from table

where key1+','+key2 in (select key1+『,』+key2 as tmpstring from table)

4樓:匿名使用者

主鍵只有一個吧。delete from tb where ( id = 'id1' and dt = 'date1' ) or (id ='id2' and dt = 'date2') or ........

5樓:匿名使用者

不是蠻難呀!一個子查詢就解決啦!

SQL語句怎麼刪除指定日期的資料

你的欄位裡面,必須有個記錄日期的吧。以oracle為例。如果你的記錄日期的欄位為字串型別的。delete from t1 where 2012 11 06 如果你的記錄日期的欄位為日期型別的。delete from t1 where to char yyyy mm dd 2012 11 06 如果記...

access資料庫 如何用SQL語句刪除資料

delete from msg sentbox where sendtime 試試。access 時間要用 包起來的。access資料庫的sql語句語法有一點點不一樣,時間是用 括起來的,sqlserver用單引號。delete from msg sentbox where sendtime 日期不...

sql 刪除帶外來鍵約束的表的語句是什麼

1 建立主鍵表,test class,並建立class id欄位為主鍵 create table test class class id number,class name varchar2 20 create recreate indexes alter table test class add ...