开发者社区> 问答> 正文

将同一个表的子查询替换为join

可以在没有子查询的情况下实现预期结果吗?也许使用联接?

我们有一个名字叫“ jose”,预期的结果是所有与jose颜色相同的行。查询应同时在MS-SQL和ORACLE中运行。

query
======
select name,color from tableA where color=(select color from tableA where name='jose')

Expected result 
===============
name    color
jose    red
Rap     red

schema
=======

Table and DATA
create table tableA (
name varchar(10),
color varchar(10)
);

insert into tableA values ('jose','red');
insert into tableA values ('Mickey','blue');
insert into tableA values ('Leo','yellow');
insert into tableA values ('Rap','red');
insert into tableA values ('Don','blue');

展开
收起
祖安文状元 2020-01-05 14:45:01 632 0
1 条回答
写回答
取消 提交回答
  • JOIN通过在color字段上进行自我连接,可以使用来获得此结果,其中第二个表中的名称为jose:

    SELECT a1.name, a1.color
    FROM tableA a1
    JOIN tableA a2 ON a2.color = a1.color AND a2.name = 'jose'
    
    

    输出量

    name    color
    
    

    jose red Rap red

    2020-01-05 14:45:12
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载