sql中 in的用法
答案:2 悬赏:10 手机版
解决时间 2021-03-04 18:05
- 提问者网友:战魂
- 2021-03-04 09:31
sql中 in的用法
最佳答案
- 五星知识达人网友:何以畏孤独
- 2021-03-04 10:05
上面的答案好像和楼主的有点出入哦,感觉怪怪的,更新过??
select * from product where cid in
(select cid from
category where pid =10 );
解决楼主的问题,直接这样就够了也很好理解
就是先在category表里面得到所有小类的cid,然后和product表连接,输出产品名
不过这里用in是方便理解的,性能上好不好还真不好说
select * from product where cid in
(select cid from
category where pid =10 );
解决楼主的问题,直接这样就够了也很好理解
就是先在category表里面得到所有小类的cid,然后和product表连接,输出产品名
不过这里用in是方便理解的,性能上好不好还真不好说
全部回答
- 1楼网友:怙棘
- 2021-03-04 10:58
你现在的这个要求一般不用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)
假如你说的大类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)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯