SQL 范围查询问题遇见与扩展学习 IN; NOT IN; NOT EXISTS;BETWEEN AND
2011-08-10 11:26
330 查看
【问题issue】:
查询 表employee中的
[EE_NUMBER]
,[FIRST_NAME]
,[LAST_NAME]
,[EMAIL]
,[COUNTRY1]
信息前提是没有在表Login_History中出现的。
【解决resolve】
SELECT [EE_NUMBER]
,[FIRST_NAME]
,[LAST_NAME]
,[EMAIL]
,[COUNTRY1]
FROM employee
where [EE_NUMBER] NOT IN
(SELECT DISTINCT [EEID]
FROM [Login_History]
where [Dirty]=0
)
============================================================================================
IN /NOT IN意思就是在/不在这个集合里面。IN 操作符允许我们在 WHERE 子句中规定多个值。
EXISTS :是查询的内容存在于多种类型中(字段中的)。
后面查询子句可以是所有字段/多个字段的查询语句,而IN只能是单个字段如:
SELECT DISTINCT pub_name
FROM publishers
WHERE EXISTS
(SELECT* FROM titles WHERE pub_id = publishers.pub_id AND type ='business')
SELECT distinct pub_name
FROM publishers
WHERE pub_id IN
(SELECT pub_id FROM titles WHERE type = 'business')
===========================================================================================
BETWEEN .....AND
闭区间集合查询[startValue,endValue]
就是 BETWEEN startValue AND endValue
开区间集合查询(startValue,endValue)
startValue< 字段Column && 字段Column <endValue
或者 startValue< 字段Column and 字段Column<endValue
对于日前的区间查询建议先查询当前日期格式,如果涉及到日期做差的可以参考datediff()函数。
总结:
具体问题==具体分析问题==执行SQL测试
查询 表employee中的
[EE_NUMBER]
,[FIRST_NAME]
,[LAST_NAME]
,[EMAIL]
,[COUNTRY1]
信息前提是没有在表Login_History中出现的。
【解决resolve】
SELECT [EE_NUMBER]
,[FIRST_NAME]
,[LAST_NAME]
,[EMAIL]
,[COUNTRY1]
FROM employee
where [EE_NUMBER] NOT IN
(SELECT DISTINCT [EEID]
FROM [Login_History]
where [Dirty]=0
)
============================================================================================
IN /NOT IN意思就是在/不在这个集合里面。IN 操作符允许我们在 WHERE 子句中规定多个值。
EXISTS :是查询的内容存在于多种类型中(字段中的)。
后面查询子句可以是所有字段/多个字段的查询语句,而IN只能是单个字段如:
SELECT DISTINCT pub_name
FROM publishers
WHERE EXISTS
(SELECT* FROM titles WHERE pub_id = publishers.pub_id AND type ='business')
SELECT distinct pub_name
FROM publishers
WHERE pub_id IN
(SELECT pub_id FROM titles WHERE type = 'business')
===========================================================================================
BETWEEN .....AND
闭区间集合查询[startValue,endValue]
就是 BETWEEN startValue AND endValue
开区间集合查询(startValue,endValue)
startValue< 字段Column && 字段Column <endValue
或者 startValue< 字段Column and 字段Column<endValue
对于日前的区间查询建议先查询当前日期格式,如果涉及到日期做差的可以参考datediff()函数。
总结:
具体问题==具体分析问题==执行SQL测试
相关文章推荐
- sql server not in 问题无法正常查询结果
- SQL Server 性能优化之——T-SQL NOT IN 和 NOT Exists
- SQL 数据库 学习 021 查询-04 in 的用法 --- 属于若干个孤立的值
- pl/sql 与vss 集成问题:Could not activate Plug-In: Version Control Interface 1.2
- 学习并使用了两种linq to entity 的实现sql关键字in的查询方法
- SQL-基础学习2--ORDER BY ,DESC,WHERE, BETWEEN,AND ,OR ,IN ,NOT
- SQL查询中in、exists、not in、not exists的用法与区别
- sql中用EXISTS替代IN、用NOT EXISTS替代NOT IN显著变化
- sql_in_not_exists_sql中 in 、not in 、exists、not exists 用法和差别
- sql not in 一个与直觉相反的问题
- MySQL分组查询时出现错误SELECT list is not in GROUP BY ;this is incompatible with sql_mode=only_full_group_by
- sql语句模糊查询单引号问题,及jquery方法扩展,struts2拦截器
- 学习tbshedule遇见问题一:javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initializ
- NOT EXISTS替代NOT IN EXISTS替换DISTINCT 识别‘低效执行’的SQL语句
- Docker安装MySQL遇见Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题
- DB2 SQL NOT IN NULL的问题
- pandas使用read_sql遇到的编码问题('latin-1' codec can't encode characters in position 12-15: ordinal not in r)
- Docker安装MySQL遇见Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题
- mysql遇见Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题
- hql和sql区别(在学习hibernate查询时候遇到的问题)