我有一个问题,我希望用col5=2206
取一个表中的所有行,然后选择col2和col3包含与col5相同的col2和col3组合的所有其他行(fi.in下面的例子col2 = 2,col3 = 6)
我还希望将返回的行过滤为col5中具有特定值的那些行(fi.col5 = 4000)。
('101', '2', '6', '2009-12-31', '2206', 'Exempt', '0', '0', '0', '4', '5'),
('102', '2', '6', '2009-12-31', '4000', 'Exempt', '-1', '0', '0', '4', '5'),
('103', '2', '6', '2009-12-31', '1200', '', '1', '0', '0', '4', '5');
我尝试了各种子查询语句。但是不能像在一张桌子上那样得到任何东西。这是可能的还是我需要创建一个更大的脚本。
答案 0 :(得分:1)
您使用自我联接来实现您想要的目标。
Select t2.*
From table t1
Join table t2 on ( t2.col2 = t1.col2 and t2.col3 = t1.col3 )
Where t1.col5 = '2206'
And t2.col5 <> '2206' -- replace that with specific filters like t2.col5 = '4000'
;
答案 1 :(得分:0)
最好你应该使用JOINS,但是你需要子查询然后你可以试试这个:
select a.* from table a where
a.col2 in (select col2 from table where col5=a.col5)
and
a.col3 in (select col3 from table where col5=a.col5)
and a.col5=4000;
答案 2 :(得分:-1)
我建议您使用后端代码而不是SQL来执行此操作,因为它可能会给您带来性能问题。