我試圖執行一個SELECT查詢,該查詢從兩個表中獲取數據僅當某些數據不存在於第三個表中時。這裏有三個表:MySQL查詢其中一對值不存在於另一個表中
博客
id | blog_name
精選訂閱
id | blog_id
訂閱
id | member_id | blog_id
我想回到那些在精選提要中的blog_id和BLOG_NAME表,但排除用戶(member_id)已訂閱到訂閱中的精選饋送表。這是我迄今的查詢(使用3爲member_id - 請注意表格名字稍微不同於上面):
SELECT featured_feeds.blog_id, featured_feeds.category_id, blogs.blog_name FROM featured_feeds LEFT JOIN blogs ON featured_feeds.blog_id = blogs.blog_id LEFT JOIN subscriptions ON subscriptions.blog_id = featured_feeds.blog_id WHERE subscriptions.blog_id != '3' ORDER BY blogs.blog_name ASC
此查詢不排除精選訂閱該用戶預訂的,如果另一個用戶訂閱了相同的提要。例如,如果訂閱表有以下行:
1 | 3 | 4
2 | 2 | 4
如果blog_id 4在功能飼料上市,我的查詢將仍然是blog_id返回由於上述數據的第二行。我需要使用GROUP嗎?
在此先感謝!
所以,你想訂閱博客列表,這是不存在BLogs,對吧? – Starx 2012-04-23 01:03:12
我想要一個特色供稿表中的博客列表(JOIN獲取帶有博客表的博客名稱),其中這些博客沒有在具有某個member_id的訂閱表中列出(即,博客4,如果member_id 3和blog_id 4不是訂閱中的行)。對不起 - 希望這不是令人困惑的哈。 – 2012-04-23 01:09:31