sql中 in的用法

sql中in的用法sql中in是怎么用的。比如说现在有商品的大类c,下面有若干小类c1,c2....每个小类里都有一些产品。现在我要列出大类c里面的所有产品。该怎么写ca... sql中 in的用法
sql 中 in 是怎么用的。
比如说现在有商品的大类c,下面有若干小类c1,c2.... 每个小类里都有一些产品。现在我要列出大类c里面的所有产品。该怎么写

category 表
cid 分类序号(非自动编号)
pid 父类序号
cname 类名称

product 表
id 产品序号
cid 类别序号(和上面的表一样)
name 产品名称

比如现在有个
大类
cid=10 pid=0 cname=手表系列
小类
cid=11 pid=10 cname=卡西欧系列
cid=12 pid=10 cname=精工系列
...
展开
 我来答
sonicscorpio
推荐于2017-04-22 · TA获得超过245个赞
知道答主
回答量:108
采纳率:0%
帮助的人:164万
展开全部
上面的答案好像和楼主的有点出入哦,感觉怪怪的,更新过??

select * from product where cid in
(select cid from
category where pid =10 );

解决楼主的问题,直接这样就够了也很好理解
就是先在category表里面得到所有小类的cid,然后和product表连接,输出产品名

不过这里用in是方便理解的,性能上好不好还真不好说
歪鼻木熊
2007-08-08 · TA获得超过458个赞
知道小有建树答主
回答量:305
采纳率:0%
帮助的人:426万
展开全部
你现在的这个要求一般不用in.

假如你说的大类C是指大类的名称是"C", 则用下面的语句:

select c.*
from category a,category b, product c
where a.name='C' and a.pid=0
and b.pid=a.cid
and c.cid=b.cid

首先从category中取出name为'C'且pid为0的数据(得到cid), 表映射到a;
然后以自联,再从category中取得pid为a的cid的数据(也就是大类C中的所有小类,表映射到b;
最后再关联产品表product, 取得cid为b的cid的所有产品,表映射到c.

当然, 如果你所说的C大类, 直接就知道其id号, 就像你给的例子中直接知道了10, 那么"自联"这步就不需要了.

-------------------------------

如果非要用in, 则按下面的方式:

select * from product where cid in (
select b.cid
from category a,category b
where a.name='C' and a.pid=0
and b.pid=a.cid
)

-------------------------------

另外, in 还用在下面这种情况, 比如:

你想取得1,3,8,9这四个小类的所有产品, 则可以用:

select * from product where cid in (1,3,8,9)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式