mysql - 如何在 MySQL 中获取所有不包含另一个字符串的字符串?
问题描述
我有一个名为“Domains”的表,其中包含“Name”字段(唯一,始终小写),其中包含我服务器上的域和子域列表,例如:
- 废话.example.com
- www.example.com
- www.blah.example.com
- 例子.com
- 例子.nl
- 例子.org
查看此列表,名称 1、2 和 3 是第 4 项的子域。我正在寻找此表中没有这些子域的所有域。或者,更准确地说,任何名称中不包含其他记录的名称的任何名称。因此只有第 4、5 和 6 项。
如果缺少记录 4,那么此查询也会有第 1 项和第 2 项作为结果,但没有第 3 项。毕竟,第 3 项包含第 1 项。
只是试图找到可以为我提供这个结果的查询......select d.name from domains where d.name not in...
好吧,我的大脑一片空白。
为什么?
这个域列表是由我的 Web 服务器生成的,它注册了在其上请求的每个新域。我正在开发一个报告页面,我将在其中显示顶级域名,以查看其中是否有任何奇怪的域。出于某种原因,我有时会在这些请求中看到未知域名,这可能会提供一些额外的见解。
我将更改我的代码,以便将来在同一个表中包含对父域的引用,但现在我必须处理这个问题和一个简单的 SQL 解决方案。
解决方案
使用与后缀匹配的自联接LIKE
SELECT d1.name
FROM domains AS d1
LEFT JOIN domains AS d2 ON d1.name LIKE CONCAT('%.', d2.name)
WHERE d2.name IS NULL
推荐阅读
- visual-studio-code - 是否可以为 VS Code 终端添加与我用于整个编辑器相同的主题
- mongodb - mongodb 启动时自动关闭
- python - 如何使用箱线图检测和删除数据集中的异常值?
- bigcommerce - 使用隐身登录时 Facebook 页面插件无法正常工作
- c++ - 如何打印具有最低ascii和其他可能性的字符串
- google-fit - 用于计步的 Google Fit APi 授予第一次用户拒绝的权限
- python - 在列表列表中收集列表的第一项
- python - Odoo:如何在 product.category 中搜索 parent_id 及其所有子项
- python - 使用 numpy 和/或 cv2 在深度图中查找最暗区域
- sql - 这种 UNION 重复数据删除方案在 SQL 中如何工作?