有没有相当于“IN”函数用于向查询添加“AND”

时间:2009-11-01 11:58:46

标签: sql-server tags

我在sql server中有以下表格:

photoalbumsTable:
album_ID
album_caption

albumtagmap
ID
album_id
tag_id

albumtags
ID
tag_name

我有以下查询,它会显示其中t.tag_name位于“Trips”或“海滩”中:

SELECT b.* FROM albumtagmap bt, photoalbums b, albumtags t
                     WHERE bt.tag_id = t.id
                     AND (t.tag_name IN ('Trips', 'Beach'))
                     AND b.album_id = bt.album_id
                     GROUP BY b.album_id, b.album_caption, b.active, b.description, b.album_name, b.album_date, b.highlight_picture
                     ORDER BY b.album_date desc

如果我想显示,其中t.tag_name位于“Trips”和“Beach”,那么等效查询是什么? 意味着在相册标签表中有针对每个标签的特定photoalbum的条目。

2 个答案:

答案 0 :(得分:1)

( SELECT b.* FROM albumtagmap bt, photoalbums b, albumtags t
WHERE bt.tag_id = t.id
AND t.tag_name='Trips'
AND b.album_id = bt.album_id )

INTERSECT

( SELECT b.* FROM albumtagmap bt, photoalbums b, albumtags t
WHERE bt.tag_id = t.id
AND t.tag_name = 'Beach'
AND b.album_id = bt.album_id )

ORDER BY  album_date desc

答案 1 :(得分:0)

听起来像你可能想要使用两个子查询的JOIN(每个标签一个查询,然后是album_id上的内连接)。您也可能只使用两个EXISTS子查询的AND。