sql中 in的用法

来源:百度知道 编辑:UC知道 时间:2024/05/09 06:07:26
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=精工系列
...
现在要列出手表系列的全部产品,怎么写

这样写
select * from product where cid in(select cid from
category where cid= 10 or pid =10 )

其中 select cid from category where cid= 10 or pid =10
是得到 包括自己在内的大类下面的所有小类的cid

得到了所有满足条件的 cid 后就可以select出 所有类别下面的 产品

然后如果要排序 就在最后加 order by 什么的

在SQL 帮助中有专著 如:
使用 IN 的子查询
通过 IN(或 NOT IN)引入的子查询结果是一列零值或更多值。子查询返回结果之后,外部查询将利用这些结果。

下列查询会找到所有曾出版过商业书籍的出版商的名称。

USE pubs
SELECT pub_name
FROM publishers
WHERE pub_id IN
(SELECT pub_id
FROM titles
WHERE type = 'business')

下面是结果集:

pub_name

in 是用于要查询在什么之内的内容,比如:
select * from user where uid in (1,2,3,4)
是查询user表中uid为"1,2,3,4"的用户的所有信息,你的哪个可以直接写成:
select * from 商品表 where 类型编号 in ( 大类c )

你说的情况可能是这样的:
1,如果是一张表记录了大类和小类以及商品的其他信息,那我想是很简单的,只要用where语句查找大类C就可以了,但我想如果是这样你也不会问大家了。
2,如果是两张表分开记录的,在商品表中只记录了小类和其他的信息。除此之外,应该还有个分类表来记录每个大类C下面的小类c1,c2的对应关系。

如果你的层次是 表,