2010-01-14 37 views
3

我有一個包含空格分隔的id列表(如:「23 42 365」)的列的產品表,該列被稱爲「類別」。數字引用另一個表(類別)中的行ID。SQL查詢以獲取其中某列中的值不存在於另一個表中的行

我需要提取所有產品行,其中空格分隔列表中的所有id指向不再存在的類別表上的行。

我知道這不是最好的數據庫設計,但我已經在較舊的系統上提交過這個任務。我甚至不確定它可以完全用SQL語句完成,但由於產品表上的記錄數量很多,使用PHP邏輯來確定要返回的行將會變慢。但是,如果這是唯一的方法,那就是我會做的!

回答

4
SELECT m.* 
FROM mytable m 
LEFT JOIN 
     categories c 
ON  FIND_IN_SET(c.id, REPLACE(m.categories, ' ', ',')) 
WHERE c.id IS NULL 
相關問題