2 zhangpan soft zhangpan_soft 于 2017.06.19 19:39 提问

求一句sql语句,用mysql

假如有一张表t,有2个字段s1,s2,假如有如下数据对,每一个()代表表中的一行,第一个数字代表s1,第二个数字代表s2,数据如下:(1,2),(1,3),(1,4),(1,5),(2,1),(3,1),(2,4),(3,4),(4,2),(4,5),但是只有同时存在(1,2),(2,1)或者(1,3),(3,1)这样的数据才符合要求,比如,有(1,5)但是没有(5,1)则不符合要求,假如目标字段是1,怎么查出(1,2),(1,3)

9个回答

wal1314520
wal1314520   2017.06.21 00:19
已采纳

图片说明

liujiding
liujiding   2017.06.19 19:50

select s1,s2 from t where s1=1

zhangpan_soft
zhangpan_soft 你明显没懂我的意思,要是那么简单我还贴出来干啥?你的呢个会把(1,2),(1,3),(1,4),(1,5)全查出来,然而按照我的要求只有(1,2),(1,3)符合要求,要是那么简单我贴出来干啥呢
4 个月之前 回复
yuefeng1110
yuefeng1110   2017.06.19 21:29

select a.* from t a left JOIN t b on a.s1= b.s2 and a.s2 = b.s1 where a.s1 = 1 and b.s1 !='';

yuefeng1110
yuefeng1110 试试不就知道了
4 个月之前 回复
D_Aniroid
D_Aniroid 这也可以用到连接查询吗?
4 个月之前 回复
strutce
strutce   Ds   Rxr 2017.06.19 21:31

select t1.s1,t1.s2 from t t1,t t2 where t1.s1=t2.s2 and t1.s2=t2.s1 and t1.s1=1

D_Aniroid
D_Aniroid   2017.06.20 11:14

显然 我也没有看懂你的意思

D_Aniroid
D_Aniroid   2017.06.20 11:14

直接把题目 给贴上来。看到明白一点

qq_34523482
qq_34523482   2017.06.20 14:45

select a.* from t a left JOIN t b on a.s1= b.s2 and a.s2 = b.s1 where a.s1 = 1 and b.s1 !='';

wal1314520
wal1314520   2017.06.21 00:16

select a.* from t a,t b where a.s1=b.s2 and a.s2=b.s1 and a.s1=1;

zhangpan_soft
zhangpan_soft   2017.06.21 12:42

本屌昨天也想到一种解决办法,select * from t where s1 in (select s2 from t where s1 = 1) and s2=1

Csdn user default icon
上传中...
上传图片
插入图片