数据库里有4个字段,分别是:名字,年龄,性格,IP地址。
名字不为空,其它有为空的情况。比如名字给出一个:张三
那是可以把名字是:张三 的记录都找出来张三 ,18,开朗,127.0.0.1
张三 ,22,开朗,13.0.1.2 我要的效果是所有有关联的数据都要查出来。
这就是
名字是张三的
年龄是18 or 22
性格是开朗
ip是127.0.0.0 or 13.0.1.2
名字不为空,其它有为空的情况。比如名字给出一个:张三
那是可以把名字是:张三 的记录都找出来张三 ,18,开朗,127.0.0.1
张三 ,22,开朗,13.0.1.2 我要的效果是所有有关联的数据都要查出来。
这就是
名字是张三的
年龄是18 or 22
性格是开朗
ip是127.0.0.0 or 13.0.1.2
select col1 姓名,
replace(wm_concat(col2),',',' or ') 年龄,
replace(wm_concat(col3),',',' or ') 性格,
replace(wm_concat(col4),',',' or ') ip地址
from t1
group by col1
姓名 年龄 性格 ip地址
---------------------------------------------------------------------
1 李四 21 or 21 成熟 or 成熟 127.0.0.3 or 13.0.1.3
2 王五 25 大器 127.0.0.8
3 张三 18 or 18 开朗 or 开朗 127.0.0.1 or 13.0.1.2
create table t1 (col1 varchar2(10),col2 number(5),col3 varchar2(10),col4 varchar2(10));insert into t1 values('张三',18,'开朗','127.0.0.1');
insert into t1 values('李四',21,'成熟','127.0.0.3');
insert into t1 values('王五',25,'大器','127.0.0.8');
insert into t1 values('张三',18,'开朗','13.0.1.2');
insert into t1 values('李四',21,'成熟','13.0.1.3');
把你的想要的东西说清楚
select * from 表 where name='张三' or age=18 or age=22 or xingge='开朗' or ip='127.0.0.1' or ip='13.0.1.2'就是我输入张三查询出张三所有相关的信息,比如
第二条数据
张三 ,22,开朗,13.0.1.2
要关联出
李四,22,成熟,12.30.36.2
王五,22,null,null
李柳,null,null,13.0.1.2
union all select * from table where xingge in(select distinct xingge from table where name='张三')
union all select * from table where ip in(select distinct ip from table where name='张三')
A,2,T,U
A,5,6,O
C,P,U,D
V,H,L,K
F,10,6,G
S,10,Y,12
像上面六条数据,正常情况,我们通过第一个字段等于A查询,这个很简单
select * from table where name='张三'
那就得到的
A,2,T,U
A,5,6,O
但是因为A,5,6,O第三个字段是6,那就要得到
A,2,T,U
A,5,6,O
F,10,6,G
又因为F,10,6,G第二个字段10,就要得到
A,2,T,U
A,5,6,O
F,10,6,G
S,10,Y,12
那就是通过第一个字段等于A就要找出这四条相关联的数据。