首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL单表子查询

问MySQL单表子查询
EN

Stack Overflow用户
提问于 2015-02-13 09:32:42
回答 3查看 69关注 0票数 0

我遇到了一个问题,我希望使用col5=2206将表中的所有行都取出来,然后选择包含与col5 (fi )相同的col2和col3组合的col2和col3的所有其他行。在下面的示例中,col2=2,col3=6)

我还希望将返回的行筛选为具有col5 (fi )中某些值的行。col5=4000)。

代码语言:javascript
复制
('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');

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-13 09:38:52

你使用自我连接来实现你想要的。

代码语言:javascript
复制
 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
EN

Stack Overflow用户

发布于 2015-02-13 09:41:02

最好使用联接,但您需要子查询,然后可以尝试以下操作:

代码语言:javascript
复制
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;
票数 0
EN

Stack Overflow用户

发布于 2015-02-13 09:35:44

我建议您使用后端代码,而不是SQL,因为这可能会给您带来性能问题。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28496370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档