Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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 SQL查询以获取列中的值在另一个表中不存在的行_Php_Sql_Mysql - Fatal编程技术网

Php SQL查询以获取列中的值在另一个表中不存在的行

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

我有一个products表,其中有一列包含一个以空格分隔的ID列表(如:“2342365”),该列称为“categories”。这些数字表示另一个表(类别)中的行ID

我需要提取所有产品行,其中空格分隔列表中的所有ID都指向categories表中不再存在的行


我知道这在很大程度上不是最好的数据库设计,但是我在一个较旧的系统上完成了这个任务。我甚至不确定是否可以完全用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