我有一個名為“域”的表,其中包含欄位“名稱”(唯一,始終小寫),其中包含我服務器上的域和子域串列,例如:
- blah.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 解決方案。
uj5u.com熱心網友回復:
使用匹配后綴的自連接 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
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/355523.html
上一篇:是否可以將此serialNumber分配給python中的變數?
下一篇:mysql資料庫的重復入口條件
