首页 > 解决方案 > 获取比较与另一个表中的所有行匹配的列的行

问题描述

我有两张桌子

表格1

在此处输入图像描述

表 2

在此处输入图像描述

我想查看表 1 中哪些列标记与表 2 中的一个或多个关键字值匹配的行。

这里的结果应该是

id = 1,3,6

在 id 1 中,78 和 213 都存在,但该行将出现 1 次。

我试过了SELECT * FROM Table1 WHERE tag IN (SELECT keyword FROM table2)。但它只返回那些开始与表 2 值匹配的行,比如结果只有 3。因为行标签以 10 开头。

标签: mysql

解决方案


我们可以FIND_IN_SET在这里尝试使用:

SELECT t1.id
FROM table1 t1
WHERE EXISTS (SELECT 1 FROM table2 t2
              WHERE FIND_IN_SET(t2.keyword, t1.tag) > 0);

请注意,在数据库中存储逗号分隔值通常并不理想,因为它表示非规范化数据。相反,将每个标签值放在单独的行上。


推荐阅读