如何根据另一个表中的 %LIKE% 值过滤表

Posted

技术标签:

【中文标题】如何根据另一个表中的 %LIKE% 值过滤表【英文标题】:How to filter a table based on %LIKE% values in another table 【发布时间】:2014-08-23 12:42:48 【问题描述】:

所以我有tableA 和tableB。 A 是原始域数据,如http://www.cnn.com,其中 B 已将其整理得非常整洁,如 cnn.com。我需要提取不在 tableB 中但在 tableA 中的网站。我想在其中放置了一个带有一些疯狂的 %LIKE% 运算符的左连接。

这是我到目前为止所拥有的,但它不起作用。

SELECT tableA.domain, sum(tableA.views) views FROM `tableA` LEFT JOIN tableB ON tableA.domain %LIKE% tableB.name WHERE tableB.name IS NULL AND GROUP BY tableA.domain ORDER BY views DESC

谢谢!

【问题讨论】:

那么它是:mysql、sql 还是 sql-server?我们需要查看您的 2 个表结构(列名和类型)。并且“不起作用”?错误或不是您想要或期望的。 PS - 你加入平等的事物;然后你做一个 WHERE... LIKE... 【参考方案1】:

试试这个

 SELECT tableA.domain, sum(tableA.views) views FROM `tableA` 
 LEFT JOIN tableB ON tableA.domain  LIKE CONCAT('%', tableB.name ,'%')
 WHERE tableB.name IS NULL 
 GROUP BY tableA.domain 
 ORDER BY views DESC

您的尝试中有两个错误。

1- LIKE CONCAT('%', tableB.name ,'%') // 你必须使用CONCAT

2- 删除group by之前的AND

【讨论】:

那不只是提取完全匹配吗?我想看看是否有任何相似的价值观。 --> 在 http://www 中是“espn.com”。 espn .com? espn.com 只是一个例子,我有许多不同的域我试图筛选。您将如何使用 tableB 和 LIKE %...% 运算符应用于 tableA 以使其过滤类似值?谢谢! 我想我知道你的意思试试这个编辑过的答案。 我可能最终执行错了,但看起来确实正确。谢谢! 如果我要在 tableA 上设置 1000 的限制,我会怎么做呢?只需将 LIMIT 1000 添加到整个位的末尾?【参考方案2】:

% 应该是您要比较的值,而不是 LIKE 关键字本身。

应该是这样的

SELECT column
FROM table
WHERE column LIKE '%pattern%';

【讨论】:

我可以像 '%tableB.name%' 一样添加它们吗?

以上是关于如何根据另一个表中的 %LIKE% 值过滤表的主要内容,如果未能解决你的问题,请参考以下文章

SQLAlchemy 根据另一个表中的值过滤表的最佳方法

如何使用另一个表中的日期列过滤一个表的开始和结束日期

根据一列删除重复项并根据另一表中的数据进行过滤

Excel的数据透视表中,如何过滤value中的0值?

如何从一个表中过滤出其 id 出现在另一个表的列中的记录

vba,如何从列表框中的工作表中删除过滤后的数据