mysql delete exists用法_自学MySQL第五天

关于Subqueries复合句,很多时候可以和JOIN形式互相替换,这时就要注意performance和readability,MOSH老师让观看者先注意readability,给出的练习为找出买了product_id = 3 的顾客,解法如下:

9ad29e828d1a99db663a2fe6429fb307.png

上图为使用JOIN的解法,可以看到逻辑较为清晰,意图明确。

34d6d76efcc9cdc3a4409f44776adde8.png

上图为使用了Subqueries的解法,可以看到在复合里又有JOIN指令,有些复杂,所以在这个例子中,使用单纯的JOIN将会更好。

ALL 关键字

ALL关键字通常用在比较中,和MAX()、MIN()互换,它是指列表中的所有数,示例如图:

71849b79a99de7a9500ce9723a654cf6.png

用ALL就可以让MySQL比较括号里能找到的所有数据进行比较,也就是说,最后选中的数据要比括号里所有的数据还要大才行。

ANY关键字

ANY关键字可以与IN关键字替换,这时要用= ANY()的形式,通常加条件时,他表示某一条件符合括号中任一一个值,与IN差不多,此处不赘述。

关联子句

有时候会遇到需要和指定条件的人的平均值进行比较,即不是和所有人进行比较,这是需要在复合句中加入限定条件。如下例:

e7b6bc90aa7f32a868121283800e5ab5.png

在本例中,要查询的是每一位顾客中大于自己支票平均值的支票信息,由于不是和所有人的支票平均值进行比较,所以在复合中加入了条件,限定client_id相同。

EXISTS 指令

若在复合前用IN指令时我们知道,复合语句先选出一系列值给主句来挑选。这里有一个弊端,如果复合语句返回的是一个数据量庞大的列表,系统逐一比对将会耗费很多时间,所以这里用EXISTS指令比较好,如图:

12468fcb7bb41bf8cc1b68c4e3f47afc.png

此处想要查询没有被订购过的商品。用EXISTS指令返回的是一个indication,用TRUE和NOT的形式告诉MySQL哪一行是符合条件的,直接掉出结果,逻辑上更加简便直接。

SELECT指令后的复合句

之前的复合句都写在WHERE后加条件,如果要直接选中一些带条件的列,则要在SELECT指令后加复合句,这里学到一个小技巧,在SELECT中加的别称虽然不能直接在之后使用,但是可以用(SELECT +别称)来直接使用,如图:

718a8d42fc7cca7f5c0d89c51036e5a2.png

本例中用到了SELECT后的复合句,关联子句和上述技巧,全方位展现了SELECT后复合句用法。

FROM指令后的复合句

现在来看FROM指令后的复合句,其实就是把上面所得的结果当成一个新的数据表来使用,这里要注意,一定要给这个表一个别称或新名字。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值