首先从一个表中选择id然后删除那些不在第二个表中的ID

时间:2011-05-13 07:50:23

标签: php mysql

我要做的是删除lobby表中没有useronline表中的id的行。这样我就能消除那些不“在线”的人。 (实际的脚本不是关于谁不在线但是它的逻辑相同)有没有办法我可以先从useronline中选择ID,然后在lobby中搜索那些不是那些的我刚刚选择了,并用while循环删除它们?

这是我的非工作脚本,向您展示到目前为止我的想法:

$sql = mysql_query("SELECT DISTINCT `id` FROM `useronline` WHERE 1");
while($row = mysql_fetch_array( $sql )) {
mysql_query("DELETE * 
FROM  `lobby` 
WHERE  `tableid` NOT IN ('$row') <-- Can't figure out how to make this part
LIMIT 0 , 30");
}

2 个答案:

答案 0 :(得分:3)

您可以使用一个查询执行此操作。

DELETE FROM  `lobby` 
WHERE  `tableid` NOT IN (SELECT DISTINCT `id` FROM `useronline`)

答案 1 :(得分:1)

为了使代码保持原样,您希望将$ row更改为$ row [“id”],如下所示:

WHERE  `tableid` NOT IN ('" . $row["id"] . "')