0

我有以下架构:

Photo [id, name]

Gallery [id, name]

PhotoGallery [photo_id, gallery_id]

每张照片可以属于许多画廊。我需要进行一个 SQL (MySQL) 查询,它允许我显示不属于某些画廊的所有不同照片(按 id 分组)。例如我们有以下数据:

Photo
------
1 bunny
2 rabbit
3 eagle

Gallery
-----
1 bunnies
2 rabbits
3 birds

PhotoGallery
-----
1 1
1 2
2 2
3 3

我想选择所有不属于画廊“兔子”的照片。

结果应该是:

2 兔子

有什么建议么?查询也应该很快,因为我在数据库中有大约 10,000,000 张照片。图库可以包含 300,000 张照片。

4

2 回答 2

2
SELECT *
FROM photos
WHERE photoID NOT IN (select photoid from photogalleries where galleryid=1)
于 2012-08-17T11:47:32.193 回答
0
SELECT 
      p.*
FROM 
      photos p LEFT OUTER JOIN PhotoGallery pg on p.id = pg.photoid
WHERE 
      pg.photoid IS NULL AND pg.galleryid = 1
于 2012-08-17T11:50:39.427 回答