Php 首先从一个表中选择ID,然后删除不在第二个表中的ID
我试图做的是删除Lobble表中没有useronline表中ID的行。这样我就可以消除那些不在线的人。实际的脚本并不是关于谁不在线,但它的逻辑是相同的。有没有一种方法,我可以首先从useronline中选择ID,然后在大厅中搜索那些不是我刚刚选择的ID,并使用while循环删除它们 这是我的非工作脚本,向您展示我迄今为止的想法:Php 首先从一个表中选择ID,然后删除不在第二个表中的ID,php,mysql,Php,Mysql,我试图做的是删除Lobble表中没有useronline表中ID的行。这样我就可以消除那些不在线的人。实际的脚本并不是关于谁不在线,但它的逻辑是相同的。有没有一种方法,我可以首先从useronline中选择ID,然后在大厅中搜索那些不是我刚刚选择的ID,并使用while循环删除它们 这是我的非工作脚本,向您展示我迄今为止的想法: $sql = mysql_query("SELECT DISTINCT `id` FROM `useronline` WHERE 1"); while($row = m
$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");
}
要保持代码不变,您需要将$row更改为$row[id],如下所示:
WHERE `tableid` NOT IN ('" . $row["id"] . "')
要保持代码不变,您需要将$row更改为$row[id],如下所示:
WHERE `tableid` NOT IN ('" . $row["id"] . "')
您可以通过一个查询来实现这一点
DELETE FROM `lobby`
WHERE `tableid` NOT IN (SELECT DISTINCT `id` FROM `useronline`)
您可以通过一个查询来实现这一点
DELETE FROM `lobby`
WHERE `tableid` NOT IN (SELECT DISTINCT `id` FROM `useronline`)
此输出是否不在1、2、3、4中,或者它是否会先删除不是1的,然后删除不是2的,依此类推…将执行大量查询,因为您的SELECT会找到。此输出是否不在1、2、3、4中,或者它是否会先删除不是1的查询,然后那些不是2的,以此类推…将有很多查询被执行,就像你的SELECT发现的那样。我不是mysql的专家,但我认为“*”在delete语句中无效?因此我在几秒钟前删除了它;-但无论如何,thx。我不是mysql方面的专家,但是我想,“*”在delete语句中是无效的?因此我在几秒钟前删除了它;-但无论如何,thx。