Php SQL查询以获取列中的值在另一个表中不存在的行
我有一个products表,其中有一列包含一个以空格分隔的ID列表(如:“2342365”),该列称为“categories”。这些数字表示另一个表(类别)中的行ID 我需要提取所有产品行,其中空格分隔列表中的所有ID都指向categories表中不再存在的行Php SQL查询以获取列中的值在另一个表中不存在的行,php,sql,mysql,Php,Sql,Mysql,我有一个products表,其中有一列包含一个以空格分隔的ID列表(如:“2342365”),该列称为“categories”。这些数字表示另一个表(类别)中的行ID 我需要提取所有产品行,其中空格分隔列表中的所有ID都指向categories表中不再存在的行 我知道这在很大程度上不是最好的数据库设计,但是我在一个较旧的系统上完成了这个任务。我甚至不确定是否可以完全用SQL语句来完成,但由于product表上记录的数量太多,使用PHP逻辑来确定要返回的行会比较慢。然而,如果这是唯一的办法,那就是
我知道这在很大程度上不是最好的数据库设计,但是我在一个较旧的系统上完成了这个任务。我甚至不确定是否可以完全用SQL语句来完成,但由于product表上记录的数量太多,使用PHP逻辑来确定要返回的行会比较慢。然而,如果这是唯一的办法,那就是我要做的 您可以使用外部联接获取缺少的行,搜索类别为null的位置
SELECT m.*
FROM mytable m
LEFT JOIN
categories c
ON FIND_IN_SET(c.id, REPLACE(m.categories, ' ', ','))
WHERE c.id IS NULL