我有一个表格产品,其中列之一是相关产品。 relatedproducts 包含由冒号分隔的串联产品 ID 字符串(productid 列),例如abc-123:foo-prod:ada69等。由于一些糟糕的设计,可能会出现产品从产品表中删除但仍然在相关产品列中引用的情况。
所以我需要一个遍历产品表中所有行的 sql 查询,通过分解数据(因此分解标题)检查相关产品列,并查看每个引用的产品是否存在于同一个产品表中。但是,我是 sql 的新手,在编写 join/regexp 查询来执行此操作时遇到问题。
任何帮助将不胜感激!
最佳答案
MySQL
可以匹配 regexp
,但遗憾的是不能返回匹配的子串。
你最好使用FIND_IN_SET
:
SELECT *
FROM products p
JOIN product rel
ON FIND_IN_SET(rel.id, REPLACE(p.related, ':', ','))
关于基于正则表达式的 MySQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1049924/