2017-04-09 82 views
0

,其數額巨大的查詢會像取決於不等於

DELETE FROM `members` WHERE `membership` = 'C' AND (`id` != '1' AND `id` !='2' AND ...... thousands of ids); 

我可怎麼辦,這個問題如何刪除巨大MySQL的行?

我也在那裏id NOT IN(「1」,「2」);但也沒有工作

我可以使用循環或類似的東西

,我想保留,不刪除的ID來自另一個表中包含字段保存,我不希望用戶ID刪除我用PHP腳本來幫我生成SQL查詢

<?php 
require_once("inc.php"); 
$realty_uids = $db->query("SELECT `uid` from `realty2` ORDER BY `uid`"); 

$r = $db->fetch_assoc($realty_uids); 



while($r = $db->fetch_assoc($realty_uids)){ 
    $array[] = $r['uid']; 
} 
$input = array_unique($array); 

echo "DELETE from `members` WHERE `membership` = 'C' "; 
foreach($input as $key => $value){ 

    echo " AND `id` != '".$value."' <br>"; 

} 
echo ";"; 
+2

定義「沒有工作」。此外爲什麼使用字符串的整數,或爲什麼使用一個單一的價值? –

+0

ID從哪裏來?您可以使用子查詢將ID提供給delete子句。或使用刪除連接。如果ID的列表來自其他地方,您可以考慮使用文本編輯器來執行一些字符串操作以生成「IN(...)」語句 – Origin

+0

您可以提供更多的上下文嗎?你顯然知道你不想刪除哪個ID,你是如何確定的?你能不能以此爲基礎查詢? – andrew

回答

0
DELETE FROM `members` WHERE `membership` = 'C' AND NOT EXISTS (SELECT at.uid FROM `realty2` at WHERE at.uid = `members`.id); 

這樣工作好感謝每一個嘗試:)