mysql - 如何检查表中的每个字段是另一个表中字段的nt子字符串
问题描述
我的方案看起来像:我有两个表:table1
,table2
table1
有一个字段:table1-name
字符串类型。
table2
有一个字段:table2-name
字符串类型。
我想返回table1-name
不是任何table2-name
记录的子字符串的所有行。我做了:
SELECT DISTINCT `table2-name`.`table2`
FROM `table2`, `table1`
WHERE `table2-name`.`table2` NOT IN (SELECT `table1-name` FROM `table1`)
LIMIT 100;
但这会返回所有table2-name
不等于table1-name
。我需要的是所有table2-name
不是table2-name
.
例子:
table1-name
:aa.abc.com, bb.com, xyz.com
table2-name
: abc.com, aaa.com, xyz.com
上面的查询将返回:
abc.com
aaa.com
我要返回的是:
aaa.com
我不想abc.com
被退回,因为它是aa.abc.com
.
你能纠正我的查询吗?
解决方案
用于NOT EXISTS
这种情况:
select *
from table1 t1
where not exists
(
select *
from table2 t2
where t2.`table2-name` like concat('%', t1.`table1-name`, '%')
);
顺便说一句:您应该避免table2-name
使用需要引号才能使用它们的名称。改用类似的东西table2_name
。
推荐阅读
- php - 如何在 php 或其框架中找到“::get”?
- c# - 如何在 TempDataDictionary 中使用另一个类的类型列表?
- java - 由于缺少 CSRF 令牌,带有 XSSFilter 的 SpringBoot 无法进行身份验证
- c++ - C++中new运算符的运算符重载
- php - 如何使用预填充的附件打开 Outlook 的新邮件窗口?(PHP)
- reactjs - React Redux Typescript 从函数调用调度操作
- powershell - VSCode CLI 使用 powershell 从本地文件安装扩展
- amazon-web-services - 如何将 Secret Manager 凭据与 RDS 数据库相关联
- angular - 使用“ng s -o/ng s/ng build”时,Angular Cli 显示没有输出
- c# - 为什么将列表转换为数组而不是在 c# 中引用?