Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 首先从一个表中选择ID,然后删除不在第二个表中的ID_Php_Mysql - Fatal编程技术网

Php 首先从一个表中选择ID,然后删除不在第二个表中的ID

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

我试图做的是删除Lobble表中没有useronline表中ID的行。这样我就可以消除那些不在线的人。实际的脚本并不是关于谁不在线,但它的逻辑是相同的。有没有一种方法,我可以首先从useronline中选择ID,然后在大厅中搜索那些不是我刚刚选择的ID,并使用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");
}

要保持代码不变,您需要将$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。