我有一个表格产品,其中一个列是相关产品。 relatedproducts包含由冒号分隔的串联产品ID字符串( column productid ),例如abc-123:foo-prod:ada69等。由于设计有些不好,有些产品可能会从产品表中删除,仍然会在相关产品列中引用。
所以我需要一个遍历products表中所有行的sql查询,通过爆炸数据来检查相关产品列(因此爆炸标题)并查看每个引用的产品是否存在于同一产品表中。但是,我是sql的新手,无法编写join / regexp查询来执行此操作。
任何帮助将不胜感激!
答案 0 :(得分:3)
MySQL
可以匹配regexp
,但遗憾的是无法返回匹配的子字符串。
您最好使用FIND_IN_SET
:
SELECT *
FROM products p
JOIN product rel
ON FIND_IN_SET(rel.id, REPLACE(p.related, ':', ','))