MySQL 单个 table 子查询

MySQL single table subquery

我有一个问题,我希望使用 col5=2206 获取 table 中的所有行,然后使用 select 包含 col2 和 col3 的所有其他行包含相同的 col2 组合col3 与 col5 相同(例如,在下面的示例中,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');

我试过各种子查询语句。但是无法像在一个 table 上那样工作。这是可能的还是我需要创建一个更大的脚本。

我宁愿建议您使用后端代码而不是 SQL 来执行此操作,因为它可能会给您带来性能问题。

您使用自联接来实现您想要的。

 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'
      ;

你最好使用 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;