sql - 如何在 SQL 中有多个 NOT LIKE
问题描述
我在数据库中有两个表。Contacts
和Filter
在Contacts
中,我有ID
、Name
和Email
作为字段。
在 中Filter
,我有ID
并且code
我的目标是能够查询整个表并导出已按 Filter 表中的项目过滤的列表。(基本上与 grep -i -Ev 可以实现的相同)......基本上我想过滤掉 gmail 或 yahoo 或其他)。
所以如果我这样做
select distinct email from contacts where email not like '%gmail%'
一级过滤器起作用。但如果我这样做,
select distinct email from contacts where email not like '%gmail%' or not like '%yahoo%'
然后事情开始失败。
在我开始在过滤器中集成嵌套选择代码之前,我无法让多个 where 字段不像 X 或 field1 不像 Y 工作。
非常感谢任何输入。
样本数据
name email
bob bob@gmail.com
joey joey@cisco.com
期望的输出
joey@cisco.com
更新:谢谢大家的帮助。问题第一阶段的答案是从 OR 变为 AND。:)
第二阶段:而不是让查询越来越大,..我宁愿使用查询来确定要排除的项目(意思是如果它们中的任何一个匹配,则排除它们)..然后我会将 yahoo gmail protonmail 添加到过滤器表的代码字段中的记录..
select distinct email from contacts where email not like in (select code from filters)
这失败了,因为它说选择有多个记录
更新:
SELECT DISTINCT email FROM Contacts WHERE email NOT LIKE (select filters.code from filters where filters.id=4)
工作..但只拉一个记录作为过滤器。并非所有这些都是过滤器。
解决方案
您只需要使用 AND 而不是 OR。
SELECT distinct email
FROM
contacts
WHERE
email not like '%gmail%'
AND email not like '%yahoo%'
推荐阅读
- python - 尽管条件检查,递归函数进入无限循环
- android-studio - Android模拟器启动时崩溃。HVF 错误:HV_ERROR
- php - 在我的 PHP 扩展中使用 c++ 库:未定义符号:mpfr_get_emin_min
- spring - 更新 Spring boot 2.0.X 执行器健康响应结构
- python - 根据一些验证计算分数,使用权重和所需的成功验证
- apache-dolphinscheduler - 具有依赖关系的任务节点之间的故障策略问题
- vue.js - bootstrap-vue 2 b-table 插槽停止工作
- c++ - 无法将“std::string&”类型的非常量左值引用绑定到“std::string”类型的右值
- java - 分析从 Oracle Java 迁移到 Azul Zulu Open SDK 的回归影响
- python - TensorFlow:logits 和标签必须具有相同的第一维,得到 logits 形状 [120,4] 和标签形状 [480]