7-13IN和NOT IN 子查询
Posted gcm_walker
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7-13IN和NOT IN 子查询相关的知识,希望对你有一定的参考价值。
IN后面的子查询可以返回多条记录。
SELECT ...FROM WHERE 查询表达式 IN(子查询)
常用IN替换等于(=)的比较子查询。
用法:
(1)使用 :IN关键字可以使父查询匹配子查询返回的多个单列值。
(2) NOT IN:将父查询条件中的表达式与子查询返回的结果进行比较把不匹配的信息显示出来。
举例:查询购买了自行车的用户信息:
根据商品的名称查询商品的编号:
SELECT ID FROM CommidInfo WHERE Name=‘自行车’
使用商品的编号去查询购买用户的商品编号:
SELECT UserId FROM OrderInfo WHERE ID= { SELECT ID FROM CommidInfo WHRER Name=\'自行车\' }
使用用户编号去查询用户信息:
SELECT *FROM UserInfo WHERE UserId= { SELECT UserId FROM OrderInfo WHERE ID= { SELECT ID FROM CommidInfo WHRER Name=\'自行车\' } }
但是在这里会报错:
当子查询返回的列为多个时,就不能用等于号了,把=换成IN就可以解决问题了。
SELECT *FROM UserInfo WHERE UserId IN { SELECT UserId FROM OrderInfo WHERE ID= { SELECT ID FROM CommidInfo WHRER Name=\'自行车\' } }
查询从未网购过的用户信息:
查询订单表中购买过商品的用户编号:
使用关键字DISTINCT去掉重复数据:
SELECT DISTINCT UserId FROM OrderInfo
把用户表中购买过商品的用户去掉,剩下的就是从未网购过的用户信息:
SELECT *FROM UserInfo WHERE NOT IN { SELECT DISTINT UserId FROM OrderInfo }
NOT IN 的意思不是在这里的子查询条件内。
以上是关于7-13IN和NOT IN 子查询的主要内容,如果未能解决你的问题,请参考以下文章
Elastic 7.13.0 版重磅发布:在 Elastic 上搜索和存储更多数据
将模块安装到 2.7.10 而不是 2.7.13 导致默认 python2.7.13 无法在 MAC 终端窗口上导入这些模块