跪求SQL问题
兄弟们帮帮我, 有个表, 表结构如下:1、图片编号, 2、图片标签ID, 这个表里存放着图片所对应的所有标签关系,是一对多的关系,问我怎么查询出,完全符合我已知标签ID的集合, 比如,我现在有标签ID 2,3,4 要求返回完全符合2,3,4标签的图片ID,兄弟们帮我看看吧 --------------------编程问答-------------------- select [图片编号] from .... [图片标签ID] in (2,3,4) --------------------编程问答-------------------- 你一个表 咋是 一对多的关系??--------------------编程问答-------------------- 首先感谢兄弟们回答,2楼说的不对的 ,应为表里数据是这样的
图片ID 标签ID
1 3
1 4
1 5
2 1
2 3
2 7
3 1
3 5
3 7
3 4
如果我有标签号为 1,5 那么应该返回的图片ID是 3因为他含有1,5
谢谢 --------------------编程问答-------------------- select [图片编号],[图片标签ID] from (select [图片编号],[图片标签ID] from(select [图片编号],[图片标签ID] from [表名] where [图片标签ID] =2) where [图片标签ID]=3) where [图片标签ID]=4 and [图片标签ID] in(2,3,4) --------------------编程问答-------------------- 呵呵。 --------------------编程问答-------------------- select [图片编号],[图片标签ID] from (select [图片编号],[图片标签ID] from(select [图片编号],[图片标签ID] from [表名] where [图片标签ID] =2) where [图片标签ID]=3) where [图片标签ID]=4 and [图片标签ID] in(2,3,4) --------------------编程问答-------------------- 感谢,楼上兄弟写的,不过我看了一下似乎还是不对的,子查询最里面的把 [图片标签ID] =2 做为条件,出来一层后又把 [图片标签ID]= 3 做为条件, 肯定不行的,这样到最后一条记录也没查到。
我的思路是这样的
select [图片编号], count(*) from [表名] where [图片标签ID] in(1,5)
group by pictureattributemapping_pictureitem having count(*) >= 2
1,5其实是我从另外的表里通过像似搜索查出来的,2代表查出来有两条记录。但是总觉的这样写不好,我用的是SQL SERVER 2005 请高教高手好的写法 。
--------------------编程问答--------------------
declare @t table(picID int, LabelID int)
insert into @t select 1, 3
union select 1, 4
union select 1, 5
union select 2, 1
union select 2, 3
union select 2, 7
union select 3, 1
union select 3, 5
union select 3, 7
union select 3, 4
select a.* from (select * from @t where LabelID = 1) as a
inner join (select picID from @t where LabelID = 5) as b on a.picID = b.picID
(10 行受影响)
picID LabelID
----------- -----------
3 1
(1 行受影响)
--------------------编程问答-------------------- 感谢xie_yanke 兄再次复贴,你的那句语句虽然能够找到问题,但是有一点, 因为我的参数传过来的是,未知的,是在 存储过程里写的, 照你这个写法可能就要写成动态SQL了。
补充:.NET技术 , ASP.NET