工作隨筆 mysql子查詢刪除原表資料

2022-04-30 17:51:08 字數 781 閱讀 9991

最近在開發的時候遇到乙個mysql的子查詢刪除原表資料的問題。在網上也看了很多方法,基本也是然並卵(不是寫的太亂就是效率太慢)。

公司dba給了乙個很好的解決方案,讓人耳目一新。

delete fb.* from froadbill.bill fb left join froadbill.refundinfo br on br.billseqno = fb.seq_no where br.billseqno is null and fb.create_time >='

20150102000000

' and fb.create_time <'

20150302000000

' ;

froadbill.bill是賬單表(約1kw資料),froadbill.refundinfo是退款表(約10w資料)。這條sql是要刪除賬單表20150102-20150302並且不在退款表的資料。這種寫法避免了在sql中使用in或者not in這種低效的語句。

資料插入也可以使用這種寫法:

insert into froadbill.bill_history select distinct fb.* from froadbill.bill fb left join froadbill.refundinfo br on br.billseqno = fb.seq_no where br.billseqno is null and fb.create_time >='20150102000000'  and fb.create_time <'20150302000000' ;

MYSQL刪除子查詢

delete from h bbs replymore where id 62 and reply id in select reply id from h bbs replymore where id 62 一開始怕刪除資料,又要重新造資料,因此用查詢語句測試,能查詢到結果,所以沒試delete,...

mysql刪除查詢 MySQL 刪除查詢

如果想從 mysql 表中刪除記錄,就要用到 sql 命令 delete from 可以在命令列中使用該命令,也可以在 php 指令碼中使用它。語法格式 下面是利用 delete 命令刪除 mysql 表中資料的一般語法格式 delete from table name where clause 如...

mysql求和 子查詢 MySQL子查詢

到現在為止,我們已經表明,以select宣告是乙個簡單的查詢。該單個語句從單個資料庫表中檢索資料。sql還同意建立乙個子查詢。即巢狀在其他查詢的查詢。下列實施例給出巢狀查詢。一種表示訂單資訊儲存,包含訂單號,客戶id。訂購日期。例如以下所看到的 一張表示儲存訂單物品資訊,例如以下 另一張表儲存的是客...