目前,oracle表中数据如下:
客户 客户组
cust_id cust_group
1 a,b,c //表示:客户号为1的客户,同时从属与a组、b组、c组
2 a //表示:客户号为1的客户,同时从属与a组
3 a,b,c,d //表示:客户号为1的客户,同时从属与a组、b组、c组、d组请问:
如何直接使用SQL 查询到同时从属于 b组,c组的数据?
结果应该为:
cust_id cust_group
1 a,b,c
3 a,b,c,d
客户 客户组
cust_id cust_group
1 a,b,c //表示:客户号为1的客户,同时从属与a组、b组、c组
2 a //表示:客户号为1的客户,同时从属与a组
3 a,b,c,d //表示:客户号为1的客户,同时从属与a组、b组、c组、d组请问:
如何直接使用SQL 查询到同时从属于 b组,c组的数据?
结果应该为:
cust_id cust_group
1 a,b,c
3 a,b,c,d
解决方案 »
- SQL中 什么时候用匿名块,什么时候用命名块呢?
- sys登陆
- 在oracle 数据库中对同一个表的不同行能不能同时修改?
- 好东东愿与大家共享, oracle内部培训资料
- 用jdbc连不上Oracle,怎么解决?
- 帮忙看一下这段什么意思
- 个为老大,看看我这,那错了,我刚学编写存储过程,我很急!
- 方案是什么?我如何建立一个?我有SYSTEM权限,我如何才能不用SYSTEM权限,而建立一个对USERINFORMATION表空间权限足够的用户呢?
- 有什么简单的语句可以将竖表转成横表?(详见例子)
- 存储过程中,能不能执行 create 命令?
- 如何在ORACLE的存储过程里传参数,并且存储过程里面是in的结构
- 请问一条关于两个表查询的sql
where instr(cust_group,'b')>0
and instr(cust_group,'c')>0
select * from table1
where cust_group like '%b%'
and cust_group like '%c%'
select * from table1
where instr(','||cust_group||',',',b,')>0
and instr(','||cust_group||',',',c,')>0
用like也一样
like 这样的语句会不会效率很低?
还是加上instr(','||cust_group||',',','||'b'||',')>0 保险一些。
a,b
b,c
这样子情况而系统抓不到数据!
where ','||cust_group||',' like '%,b,%'
and ','||cust_group||',' like '%,c,%';另外,尽量不要用'a,b,c'这样的字符串来描述多对多的关系,因为这违反了关系型数据的标准范式。标准的设计应该是建立另外一个表
create table t_relationship
( cust_id integer
, cust_group varchar2(10));记录应该是
cust_id cust_group
1 a
1 b
1 c
2 a
3 a
3 b
3 c
3 d 你的设计只有在数据量不大,性能没问题的情况下才可行。