Mysql
如何找到返回多行的查詢之間的區別?
我有兩個表格,網站和頁面,看起來像這樣:
website id | name ------------ 1 | site 1 2 | site 2 3 | site 3 page id | name | site_id | deleted ---------------------------------- 1 | home| 1 | 0 2 | pg2 | 1 | 1 3 | pg1 | 2 | 0 4 | pg2 | 2 | 0 5 | pg1 | 3 | 1 6 | this| 3 | 1
在範例中,站點 1 有一個已刪除頁面和一個活動頁面;站點 2 有兩個活動頁面;站點 3 沒有活動頁面。目標是返回沒有活動頁面的網站列表。
我有以下查詢,它為我提供了每個站點的已刪除頁面數:
SELECT w.id, w.name, count(p.id) AS deleted_pages_num FROM page p RIGHT JOIN website w ON p.site_id = w.id WHERE p.deleted = 1 GROUP BY p.site_id
你會在哪裡得到這個結果
id| name | deleted_pages_num ------------------------------- 1 | site 1 | 1 2 | site 2 | 0 3 | site 3 | 2
反之亦然,您可以設置 p.is_deleted = 0 來獲取每個網站的活動頁面數。我需要找出這兩個查詢之間的區別,以便確定哪些網站已刪除所有頁面。只是對此完全空白。
嘗試使用以下內容:
select * from website a where not exists (select null from page where site_id=a.id and deleted=0)
可能這就是你要的