sql where条件后面跟select语句的三种实现方式 20259965编辑

Heaven helps those who help themselves
资深码农+深耕理财=财富自由
欢迎关注

sql where条件后面跟select语句的三种实现方式

Created by Marydon on 2021-01-16 18:09

1.情景展示

  where限制条件后面如果想要加select语句的话,如何实现?

2.原因分析

  通常情况下,where后面跟的是:clomn=值的方式,其实,=号后面也是可以使用查询语句的,但有使用限制条件,下面会说;

  使用in()或者exists()函数,则基本上没有限制条件。

3.解决方案

  方式一:in()

  语法结构:

  where cloumn in(select clomn from table)

  适用数据库:MySQL和Oracle

  查询示例:

1
2
3
4
5
select t.endno
  from cz_einvoices t
 where t.ivccode =   '123'
   and t.orgcode   in
       select orgcode   from cz_unitinfo   where invoicingpartycode =   '456' ) 

  更新示例:

1
2
3
4
5
UPDATE CZ_EINVOICES
   SET BEGNO =   '111' , ENDNO =   '333' , CURRENTNO =   '222'
 WHERE IVCCODE =   '123'
   AND ORGCODE   IN
       SELECT ORGCODE   FROM CZ_UNITINFO   WHERE INVOICINGPARTYCODE =   '456' )

  方式二:exists()

  语法结构:

  from table t1 where  exists(select 1 from table t2 where t2.cloumn1 = t1.cloumn1)

  适用数据库:MySQL和Oracle

  查询示例:

1
2
3
4
5
SELECT T.ENDNO
  FROM CZ_EINVOICES T
 WHERE T.IVCCODE =   '123'
   AND EXISTS
       SELECT 1   FROM CZ_UNITINFO   WHERE INVOICINGPARTYCODE =   '456' AND ORGCODE=T.ORGCODE)

4.效果展示

  两种方式实现的效果是一致哒。

2021-01-21

  方式三:=(select cloumn from table)

  语法结构:

  where cloumn=(select cloumn from table)

  适用数据库:MySQL和Oracle

  来自评论区园友:代码中透露着杀气

  where条件 =号后面也是可以跟select语句的;

  使用条件:

  第一,使用()包住;

  第二,select的查询结果集只能为1(只返回一条数据)。

  我自己也测试了一下,确实可行:

  ORACLE

  MYSQL

 

5.总结

  当确定限制条件where后面字段的值具有唯一性的时候,我们可以直接用=(select ...);

  当限制条件where后面字段的值可能有多个时,我们可以使用in(select ...)或exists(select ...)来实现;

  in 和 exists的区别:

  如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in, 反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists;

  但如果不走索引的话,则它俩的执行效率没有太大差别。

2021年10月30日15:28:24

  其实,要想得到同样的数据,还有一种实现方式;

  虽然,它并不是使用where...select...语句实现的,但是依旧是我们常用的一种关联查询方法;

  多一种方法,就是多一条思路,增加一种选择,增长一种见识;

  在实际运用过程中,我们应抱着多学、多想的思路去对待自己的成品,有没有更好的实现方式。。。

  内连接:INNER JOIN

  适用数据库:MySQL和Oracle

  源自评论区园友:lybingyu

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

与君共勉:最实用的自律是攒钱,最养眼的自律是健身,最健康的自律是早睡,最改变气质的自律是看书,最好的自律是经济独立 。

您的一个点赞,一句留言,一次打赏,就是博主创作的动力源泉!

↓↓↓↓↓↓写的不错,对你有帮助?赏博主一口饭吧↓↓↓↓↓↓

posted @   Marydon  阅读(9965)  评论(7编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示
sorry,本博客所有代码禁止复制,原创代码需扫码支付方可获取!
关闭

1、先加好友再付费,点我加好友;

2、代码不能满足你的需求?加好友付费定制你的专属代码!

3、付费标准及方式,点我查看详情。