mysql查询

ykejflvf  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(236)

我有两张table。第一个是 messages 第二个是 room . msg_idmessages 表与 idroom table。我要做的是选择所有 msg_id 对于他们中的每一个,我想运行一个查询,删除他们的id与msg\u id不匹配的所有房间:
我的代码:

$result = mysql_query("SELECT `msg_id` FROM `messages`");
while($row = mysql_fetch_array( $result )) {
    $me = $row[0]; //$me as a string
    $int = (int)$me;//transform $me's value to int

  $result2 = mysql_query("DELETE FROM `room` WHERE `id` NOT LIKE '%" . $int . "%'");}

这个 $result2 查询将从文件室表中删除所有条目,无论 $int 变量。这意味着支票无效。如果我改变主意 $result2 对此,即:

$result2 = mysql_query("DELETE FROM `room` WHERE `id` NOT LIKE '%86%'");

所有条目都将被删除,但带有 id = 86 (工作正常)
基本的计划是我必须把所有的 room 与他们的 idmsg_id .

ruyhziif

ruyhziif1#

尝试此查询,

delete from 'room' where 'id' not in(select 'msg_id' from 'messages');

如果对你不起作用,你可以试试 NOT EQUAL TO 查询

delete from 'room' where 'id' <>(select 'msg_id' from 'messages');
rlcwz9us

rlcwz9us2#

DELETE FROM `room` WHERE `id` NOT IN (SELECT `msg_id` FROM `messages`)

如果无法使用子查询,可以尝试:

$result = mysql_query("SELECT `msg_id` FROM `messages`");
$ids = [];
while($row = mysql_fetch_array($result)) {
    $ids[] = (int) $row[0];
}
$result2 = mysql_query("DELETE FROM `room` WHERE `id` NOT IN (" . implode(',', $ids) . "));

请不要使用mysql\u查询它已被弃用

dluptydi

dluptydi3#

你能用一个子查询吗? DELETE FROM ROOM WHERE id not in(SELECT msg_id FROM messages);

相关问题