亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

刪除兩列連接重復的行

刪除兩列連接重復的行

PHP
喵喔喔 2021-11-19 16:12:56
表teh-1400行。我想刪除具有col1和col2重復的行。例如 - 如果col1是lorem和col2是ipsum,還有一些下一行 -col1是lorem和col2是應該刪除ipsum該next行。這是我正在使用的代碼,看不出有什么問題,因為最終結果是 - 只剩下一行,所有其他行都被刪除。該表至少有一半關于col1和col2連接的唯一行。$st = $db->query("select id, col1, col2 from teh");$st->execute();$arr = $st->fetchAll();$check = [];foreach($arr as $el){    $str = $el['col1'] . $el['col2'];    if(in_array($str, $check)){        $sql = "delete from teh where id = :aid";        $st = $db->prepare($sql);        $st->execute([":aid" => $el['id']]);    }    else{        array_push($check, $str);    }}
查看完整描述

3 回答

?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

嘗試這樣的事情:


$st = $db->query("select id, col1, col2 from teh");

$st->execute();

$arr = $st->fetchAll();

foreach($arr as $el){

    $sql = "delete from teh where col1 = acol1 and col2 = acol2 and id <> aid";

    $st = $db->prepare($sql);

    $st->execute([":acol1" => $el['col1'], ":acol2" => $el['col2'], ":aid" => $el['id']]);

}

這個想法是刪除與您當時正在檢查的行具有相同值但id值不同的所有行。無需以這種方式連接并將其保存到數組中。


查看完整回答
反對 回復 2021-11-19
?
森欄

TA貢獻1810條經驗 獲得超5個贊

如果你想刪除的行具有較高id但同樣col1和col2值,你可以簡單地DELETE在那里有匹配的行以較低的行存在id價值


DELETE 

t1

FROM teh t1

JOIN teh t2 ON t2.col1 = t1.col1 AND t2.col2 = t1.col2 AND t2.id < t1.id


查看完整回答
反對 回復 2021-11-19
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

嘗試這樣的事情:


$st = $db->query("select id, col1, col2 from teh");

$st->execute();

$arr = $st->fetchAll();

foreach($arr as $el){

    $sql = "delete from teh where col1 = acol1 and col2 = acol2 and id <> aid";

    $st = $db->prepare($sql);

    $st->execute([":acol1" => $el['col1'], ":acol2" => $el['col2'], ":aid" => $el['id']]);

}

這個想法是刪除與您當時正在檢查的行具有相同值但id值不同的所有行。無需以這種方式連接并將其保存到數組中。


查看完整回答
反對 回復 2021-11-19
  • 3 回答
  • 0 關注
  • 222 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號