2017-04-09 55 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); 

这样工作好感谢每一个尝试:)