-
2021-05-23 08:27:00
c#查询关键字where 子句的运用
引导语:where是数据库中的一个指令,一般用于用于规定选择的标准。在c#中同样适用,以下是小编整理的c#查询关键字where 子句的运用,欢迎参考阅读!
where 子句用在查询表达式中,用于指定将在查询表达式中返回数据源中的哪些元素。它将一个布尔条件(“谓词”)应用于每个源元素(由范围变量引用),并返回满足指定条件的元素。一个查询表达式可以包含多个 where 子句,一个子句可以包含多个谓词子表达式。
示例
在下面的示例中,where 子句筛选出除小于五的`数字外的所有数字。如果移除 where 子句,则会返回数据源中的所有数字。表达式 num < 5 是应用于每个元素的谓词。
C#
class WhereSample
{
static void Main()
{
// Simple data source. Arrays support IEnumerable.
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
// Simple query with one predicate in where clause.
var queryLowNums =
from num in numbers
where num < 5
select num;
// Execute the query.
foreach (var s in queryLowNums)
{
Console.Write(s.ToString() + " ");
}
}
}
//Output: 4 1 3 2 0
在单一 where 子句内,可以使用 && 和 || 运算符根据需要指定任意多个谓词。在下面的示例中,查询将指定两个谓词,以便只选择小于五的偶数。
C#
class WhereSample2
{
static void Main()
{
// Data source.
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
// Create the query with two predicates in where clause.
var queryLowNums2 =
from num in numbers
where num < 5 && num % 2 == 0
select num;
// Execute the query
foreach (var s in queryLowNums2)
{
Console.Write(s.ToString() + " ");
}
}
}
// Output: 4 2 0
where 子句可以包含一个或多个返回布尔值的方法。在下面的示例中,where 子句使用一个方法来确定范围变量的当前值是偶数还是奇数。
C#
class WhereSample3
{
static void Main()
{
// Data source
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
// Create the query with a method call in the where clause.
// Note: This won't work in LINQ to SQL unless you have a
// stored procedure that is mapped to a method by this name.
var queryEvenNums =
from num in numbers
where IsEven(num)
select num;
// Execute the query.
foreach (var s in queryEvenNums)
{
Console.Write(s.ToString() + " ");
}
}
// Method may be instance method or static method.
static bool IsEven(int i)
{
return i % 2 == 0;
}
}
//Output: 4 8 6 2 0
备注
where 子句是一种筛选机制。除了不能是第一个或最后一个子句外,它几乎可以放在查询表达式中的任何位置。where 子句可以出现在 group 子句的前面或后面,具体情况取决于是必须在对源元素进行分组之前还是之后来筛选源元素。
如果指定的谓词对于数据源中的元素无效,则会发生编译时错误。这是 LINQ 提供的强类型检查的一个优点。
编译时,where 关键字会被转换为对 Where 标准查询运算符方法的调用。
更多相关内容 -
oracle数据库操作中简单的where子句及where子句关键字
2019-11-11 23:27:51简单的where子句 使用where条件进行结果筛选 语法:select * from 表名 where 条件;注意:条件中字段值区分大小写,字段名不区分大小写,字段值使用单引号括起来 1、在where中使用算术表达式 = ,< , > ,&...简单的where子句
使用where条件进行结果筛选
语法:select * from 表名 where 条件;注意:条件中字段值区分大小写,字段名不区分大小写,字段值使用单引号括起来
1、在where中使用算术表达式 = ,< , > ,>= ,<= ,<>
2、使用order by 对筛选结果进行排序,order by 出现在where后面
查看工资等于1250的员工信息
select * from emp where sal='1250'--筛选条件是个数字也可以使用单引号
查看工作等于CLERK的员工信息
select * from emp where job='CLERK'--在筛选条件中字段值如果是字符需要加上单引号
select * from emp where job='clerk'--在sql语句中字段的值是区分大小写的
select * from emp where JOB='CLERK'--在sql中字段是不区分大小写的
查看工资大于1250的员工姓名和工作
select ename,job ,sal from emp where sal>'1250' order by sal--使用order by 对筛选结果进行排序,order by 出现在where后面
查看工资大于等于2000的员工信息
select * from emp where sal>=2000;
查看工资小于等于2000的员工信息;
select * from emp where sal<=2000
查看工资不等于1500的员工信息
select * from emp where sal<>1500 order by sal
查看入职日期在81年后的员工信息
select * from emp where hiredate>'1981年12月31号'
select * from emp where hiredate>'1981/12/31'
select * from emp where hiredate>'31-12月-1981'--使用日期的默认格式查询符合要求的数据,日-月-年
where子句使用关键字
使用where子句进行结果的筛选
知识点:where查询条件中使用关键字
1、and 用于多条件的与筛选:select * from 表名 where 条件 and 条件 and 条件....
2、or 用于多条件的或筛选: select * from 表名 where 条件 or 条件 or 条件....
3、in 用于多条件的或筛选: select * from 表名 where 字段名 in(值,值,值....)
4、like用于模糊查询: select * from 表名 where 字段名 like '%值%' 包含
5、is null 和is not null 用来判断字段是否为空 select * from 表名 where 字段名 is null
讲解: 在where子句中使用关键字
--查询工资在2000-3000之间的员工信息
select * from emp where sal>=2000 and sal<=3000--使用and关键字进行"与"的多条件筛选;
select * from emp where sal between 2000 and 3000;--使用between and 关键字进行筛选;
--查询工作为SALESMAN,ANALYST,MANAGER的员工信息
select * from emp where job='SALESMAN' or job='ANALYST' or job='MANAGER'--使用or关键字进行"或"的多条件筛选
select * from emp where job in('SALESMAN','ANALYST','MANAGER');--使用in关键字进行"或"的多条件筛选
select * from emp where job='ANALYST'
--查询姓名中包含s的,以s开头的,以s结尾的,第二个字符为A的。
select * from emp where ename like '%S%';--使用like关键字,姓名中包含S的,%代表任意多个字符
select * from emp where ename like 'S%';--使用like关键字,以S开头的
select * from emp where ename like '%S';--以S结尾的
select * from emp where ename like '_A%'--使用"_"指定位置包含指定字符的信息,"_"代表任意一个字符
--------------查询名字中包含下划线的用户信息
select * from emp where ename like '%A_%'escape 'A';--使用escape关键字将普通字符设置成为转译字符。
--查询有津贴的员工信息
select * from emp where comm is not null;
select * from emp where comm is null;--查询没有津贴的员工信息 -
MySQL学习笔记之子查询,在关键字select、from、where、exists后的子查询
2022-02-20 16:17:50含义:出现在其他语句中的select语句,称为子查询或内查询;而外部的查询语句,称为主查询或外查询 分类: 按照子查询出现的位置: select后面:仅仅支持标量子查询 from 后面:仅支持表子查询 where或having...一、子查询的含义
-
含义:出现在其他语句中的select语句,称为子查询或内查询;而外部的查询语句,称为主查询或外查询
-
分类:
按照子查询出现的位置:
select
后面:仅仅支持标量子查询
from
后面:仅支持表子查询
where
或having
后面:支持标量子查询、列子查询、行子查询
exists
后面:表子查询按照结果集的行列数不同:
标量子查询:结果集只有一行一列 (又称为单行子查询)
列子查询: 结果集只有一列多行
行子查询: 结果集只有一行多列
表子查询: 结果集一般为多行多列二、在where或having后面的子查询
1.标量子查询 2.列子查询 3.行子查询
1.特点:
① 子查询放在小括号内
② 子查询一般放在条件的右侧
③ 在标量子查询中,一般搭配单行操作符使用:< > <= >= <> =
在列子查询中,一般搭配着多行操作符使用:IN, ANY/SOME, ALL
④ 子查询的运行要优先于主查询,因为主查询要使用子查询的查询结果案例
1.谁的工资比Abel高?SELECT * FROM employees WHERE salary > ( SELECT salary FROM employees WHERE last_name = 'Abel' )
案例
2.返回job_id与141号员工相同,salary比143号员工多的员工的姓名、job_id、工资SELECT last_name, job_id, salary FROM employees WHERE job_id = ( SELECT job_id FROM employees WHERE employee_id = 141 ) AND salary > ( SELECT salary FROM employees WHERE employee_id = 143 );
案例
3.返回公司中工资最少的员工的last_name job_id salarySELECT last_name, job_id, salary FROM employees WHERE salary = ( SELECT MIN(salary) FROM employees );
2.HAVING + 标量子查询
案例
4.查询最低工资大于 50号部门最低工资 的部门id及其最低工资SELECT MIN(salary),department_id FROM employees GROUP BY department_id HAVING MIN(salary) > ( SELECT MIN(salary) FROM employees WHERE department_id = 50 );
3.列子查询(多行子查询)
案例
5:返回location_id是1400或1700的部门的所有员工姓名SELECT last_name FROM employees e INNER JOIN departments d ON e.`department_id` = d.`department_id` WHERE d.`location_id` IN (1400,1700);
或
SELECT last_name FROM employees WHERE department_id IN ( SELECT department_id FROM departments WHERE location_id IN (1400,1700) );
案例
6 返回其他工种中比job_id为’IT_PROG’工种任一工资低的员工的员工号、姓名、job_id及salarySELECT employee_id, last_name, job_id, salary FROM employees WHERE salary < ANY( SELECT DISTINCT salary FROM employees WHERE job_id = 'IT_PROG' )AND job_id <> 'IT_PROG';
4.行子查询(结果集为一行多列或者多行多列)
案例
7 查询员工编号最小、工资最高的员工信息SELECT * FROM employees WHERE salary = ( SELECT MAX(salary) FROM employees )AND employee_id = ( SELECT MIN(employee_id) FROM employees ); SELECT * FROM employees --注意:此时的运算符应该是一样的如,employee_id = ? salary = ? WHERE (employee_id,salary) = SELECT MIN(employee_id), MAX(salary) FROM employees #行子查询,输出就应得是行 );
三、放在SELECT后的子查询(仅仅支持标量子查询)
案例
8 查询每个部门的员工个数(♥)SELECT d.*,( SELECT COUNT(*) FROM employees e WHERE d.`department_id` = e.`department_id` ) AS 员工个数 FROM departments d;
案例
9 查询员工号为102的部门名SELECT department_name FROM departments WHERE department_id = ( SELECT department_id FROM employees WHERE employee_id = 102 );
使用where后的标量子查询就可以实现(如上),但是如果必须放在SELECT之后,那么可以如下:
SELECT ( SELECT department_name FROM departments d INNER JOIN employees e ON d.department_id = e.department_id WHERE e.employee_id = 102 ) AS 部门名称;
四、子查询放在
From
后面- 本质就是将结果集充当成一张表,然后必须为这张表起名字,之后进行查询即可
案例
10 查询每个部门的平均工资的工资等级SELECT AVG(salary)avg_sal,department_id FROM employees GROUP BY department_id; SELECT avg_tab.avg_sal, department_id, jg.grade_level FROM ( SELECT AVG(salary) avg_sal,department_id FROM employees e GROUP BY department_id ) AS avg_tab ##一定要给新表格起别名!!!! INNER JOIN job_grades jg ON avg_tab.avg_sal BETWEEN jg.`lowest_sal` AND jg.`highest_sal`;
五、exists后边的子查询
语法:
exists
(完整的查询语句)
结果:
0或1
注意:
一般用exists的查询均可用其他的查询方式代替,所以EXISTS用的较少,如下例子案例
11 查询有员工的部门名IN 方法
SELECT department_name FROM departments d WHERE d.`department_id` IN ( SELECT department_id FROM employees );
exists方法
SELECT department_name FROM departments d WHERE EXISTS ( SELECT * FROM employees e WHERE e.`department_id` = d.`department_id` );
案例
12 查询没有女朋友的男生信息EXISTS方法
SELECT * FROM boys b WHERE NOT EXISTS ( SELECT * FROM beauty g WHERE g.boyfriend_id = b.`id` );
NOT IN方法
SELECT bo.* FROM boys bo WHERE bo.`id` NOT IN ( SELECT boyfriend_id FROM beauty );
-
-
子查询关键字-ALL、ANY、SOME、IN、EXISTS
2022-03-23 08:45:47子查询关键字-ALL、ANY、SOME、IN、EXISTS ALL select from where c > all(查询语句) 等价于 select from where c > result1 and c > result2 and c > result3 特点: 1:all与子查询返回的所有值比较为...子查询关键字-ALL、ANY、SOME、IN、EXISTS
ALL
select from where c > all(查询语句) 等价于 select from where c > result1 and c > result2 and c > result3 特点: 1:all与子查询返回的所有值比较为true 则返回true 2:ALL可以与= > < >= <= <>结合使用 3:all表示指定列中的值必须要大于子查询集中的每一个值 eg:查询年龄大于'1003'部门所有年龄的员工信息 select * from emp3 where age > all(select age from emp3 where dept_id='1003'); 查询不属于任何一个部门的员工信息 select * from emp3 where dept_id != all(select deptno from dept3);
ANY SOME
select from where c > any(查询语句) 等价于 select from where c > result1 or c > result2 or c > result3 特点: 1:any与子查询返回的所有值比较为true 则返回true 2:any可以与= > < >= <= <>结合使用 3:any表示指定列中的值要大于子查询集中任意的一个值 eg:查询年龄大于'1003'部门任意一个员工年龄的员工信息 select * from emp3 where age > any(select age from emp3 where dept_id='1003'); some和any的作用是一样的,some可以理解为是any的别名
IN
select from c in (查询语句) 等价于 select from where c =result1 or c=result2 or c=result3 特点: in关键字,用于判断某个记录的值,是否在指定的集合中 在in关键字前面加上not可以将条件反过来 eg:查询研发部和销售部的员工信息,包括员工工号,员工名字 select c.cid,c.name from cmp3 c where dept_id in (select deptno from dept3 where name='研发部' or name='销售部');
EXISTS
select from where exists(查询语句) 特点: 该子查询如果"有数据结果"(至少返回一行数据),则该EXISTS()的结果为true 外层查询执行 该子查询如果"没有数据结果"(没有任何数据返回),则该EXISTS()的结果为false 外层查询不执行 注意:EXISTS关键字,比in关键字的运算效率高,在实际开发中 特别是数据量大的时候推荐使用exists关键字 eg:查询公司是否有大于60岁的员工,有则输出 select * from epm3 a where exists (select * from emp3 b where a.age>60) 查询所属部门的员工信息 select *from dept3 a where exists (select * from emp3 b where a.deptno=b.dept_id)
-
MYSQL查询语句2——子查询
2021-12-28 08:33:36子查询一、为什么会使用子查询二、什么是子查询三、子查询的具体使用+实例1、WHERE子句后使用子查询2、FROM子句后使用子查询 一、为什么会使用子查询 虽然可以通过连接查询来实现多表查询数据记录,但不建议使用,... -
数据库的高级查询七:子查询
2021-04-04 21:22:422.子查询分类:WHERE子句中的子查询,FROM子句中的子查询,SELECT子句中的子查询 3.相关子查询:WHERE和SELECT中的子查询 二:子查询:根据【子查询的结果集中的记录的数量】的角度 1.子查询:单行子查询,多行子... -
主流数据库之子查询
2022-04-08 18:16:53WHERE子句中带exists关键字的子查询 WHERE子句中对比较运算进行限制的子查询 利用子查询插入、更新与删除数据 利用子查询修改表数据 利用子查询插入数据 利用子查询更新数据 利用子查询删除数据 前言 大家... -
sqlsever2019:where子句讲解(三:like关键字)
2021-12-26 20:37:59sqlsever:like关键字讲解 -
Where子句常用查询条件
2020-01-08 16:38:03IN:IN 操作符允许我们在 WHERE 子句中规定多个值。...EXISTS:用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False ORDER BY:排序 GROUP BY:分组 HAVING:对分组... -
用子查询语句查询MySQL数据库中的数据(子查询语句)——MySQL 5.7数据库
2020-03-30 13:00:36二、利用子查询做表达式三、利用子查询生成派生表四、where子句中的子查询1.带比较运算符的子查询。2.带in关键字的子查询 。3.带exists关键字的子查询。4.对比较运算进行限制的子查询。五、利用子查询插入、更新与... -
SQL中where子句中不能出现聚合函数的原因
2018-06-23 15:48:42那么我们不能在where子句中使用这些函数,为什么呢?聚集函数也叫列函数,它们都是基于整列数据进行计算的,而where子句则是对数据行进行过滤的,在筛选过程中依赖“基于已经筛选完毕的数据得出的计算结果”是一种... -
sql中查询命令的关键字是哪些?
2021-01-19 02:18:50最简单的查询:select * from [where ]select column1,column2....from [where]这里需要注意的是where子句中条件过滤使用到的关键字,比如用到逻辑运算符like中的’%‘(匹配一个或多个字符)和’_‘(仅匹配一个)... -
SQL学习笔记 where子句用法,like关键字 嵌套查询
2012-02-11 22:12:09原文:... where子句 比较运算符: , ,> , > = , =, != , ! ,!> . text , ntext , image .型数据不可用。 范围说明: between A and B,not between A and B. 可 -
Oracle 中的SELECT 关键字(查询、检索)
2021-05-01 07:38:371. SELECT 关键字用法:检索单个列:select 列名 from 表名;例:select ename from emp;检索多个列: select [列1,列2, ... ,列N] from 表名;例:select ename , sal from emp;检索所有列:select * from 表名;例... -
mysql中查询常用的关键字
2021-02-01 01:07:44最简单的查询:这里需要注意的是where子句中条件过滤使用到的关键字,比如用到逻辑运算符like中的’%‘(匹配一个或多个字符)和’_‘(仅匹配一个)等。distinct关键字这个关键字,主要用来取出列中唯一的值。需要注意... -
sql中查询命令的关键字是什么
2021-03-04 04:14:34sql中查询命令的关键字是什么发布时间:2020-11-13 10:34:56来源:亿速云阅读:72作者:...最简单的查询:select * from [where ]select column1,column2....from [where]这里需要注意的是where子句中条件过滤... -
MySQL | 多行子查询的多种格式形式讲解
2021-01-19 08:00:02在这篇文章中,我们主要学习MySQL数据库中子查询的应用,自从现在很多MySQL版本提供了子查询功能后,我们使用起来更方便,面对庞大的...在子查询中可以使用in关键字、exists关键字和比较运算符来连接表。1.in关键... -
Mysql 数据库中Where 关键字的使用
2018-03-23 20:01:47一、Mysql 数据库中where 关键字的使用1、Where 是sql语句中用来限定查询条件的,符合条件的则在结果中显示,不符合则不在结果中显示。2、判断是否符合条件有两种方法,第一种是使用比较运算符,适用于子查询只有一... -
MySQL学习笔记之多表查询的子查询
2021-04-20 12:13:56子查询就是指在一个查询之中嵌套了其他的若干查询,即在一个select查询语句的where和from子句中包含另一个select查询语句,外层select查询语句称为外层查询或父查询,where子句中的select语句称为内层查询或子查询。... -
MySQL子查询的几种常见形式介绍
2020-12-15 20:12:17当不加关键词的时候,子查询语句返回的是一个离散值(注意是一个),查询语句将以子查询语句的结果作为自己 where子句的条件进行查询,该句法可以在子查询语句前加入any、all、some等关键字,此时子查询语句返回的是一... -
MySQL—Select的子句(where条件查询、group by 分组查询、having 筛选、order by 排序、limit 分页)
2020-08-17 21:33:55MySQL—Select的子句 知识大纲 where 条件查询 group by 分组查询 having 筛选 order by 排序 limit 分页 1.where条件查询 示例 CREATE TABLE students ( s_id VARCHAR(12), s_name VARCHAR(20), s_sex ... -
MySQL中的查询子句
2021-01-19 08:30:03查询语句字句名称使用目的select确定结果集中应该包含那些列from指明所要提取数据的表,以及这些表是如何连接的where过滤不需要的数据group by用于对具有想用列值的行进行分组having过滤掉不需要的组order by按一个... -
Oracle Where子句
2021-05-01 09:38:13在本教程中将学习如何使用Oracle WHERE子句来指定过滤的条件返回符合查询条件的行记录。Oracle WHERE子句简介WHERE子句指定SELECT语句返回符合搜索条件的行记录。下面说明了WHERE子句的语法:SELECTcolumn_1,column_... -
MySQL关键字exists用法_exists子查询注意事项
2021-06-09 12:13:38说明: exists 用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False,与子查询后的select语句中的字段列表无关。 注意事项: ① 在写exists 内部查询的时候 使用了count函数,所有... -
SELECT中常用的子查询操作
2021-01-19 04:53:17MySQL中的子查询是在MySQL中经常使用到的一个操作,不仅仅是用在DQL语句中,在DDL语句、DML语句中也都会常用到子查询。子查询的定义:子查询是将一个查询语句嵌套在另一个查询语句中;在特定情况下,一个查询语句的... -
数据库查询语句关键字总结
2021-01-19 13:39:09看过牛腩视频后,前17集讲后台代码的编写,尤其讲到查询语句的时候,顿时感觉原来学习过的查询语句中用到的关键字烟消云散了,啥都不记得了,通过看视频,帮着回忆了一部分,在这里总结一下,查询语句中用到的关键字... -
sqlite3学习之Having 子句&Distinct 关键字
2019-01-11 09:33:10HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果,也就是说,WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件,来看下 HAVING 子句在 SELECT 查询中的位置: ... -
在mysql中如何进行子查询?
2021-01-19 06:04:40在mysql中,子查询是指将一个查询语句嵌套在另一个查询语句中,可以在SELECT、UPDATE和 DELETE语句中配合WHERE子句进行实现,WHERE子句中语法格式为“WHERE (另一个查询语句)”。(推荐教程:mysql视频教程)子查询是 ... -
MYSQL创建视图from中包含子查询的问题
2020-01-12 19:40:02MYSQL创建视图from中包含子查询的问题 今天在学习Mysql创建视图遇到了一个很有趣的问题? 创建视图 emp_v2,要求查询部门的最高工资高于 12000 的部门信息 CREATE VIEW emp_v2 AS SELECT d.* FROM (SELECT MAX... -
MySQL数据库WHERE查询in,like子查询详解
2021-01-27 16:25:14我们可以使用一个条件子句WHERE子句中筛选出来的结果。使用WHERE子句,我们可以指定一个选择的标准来从表中选择所需的记录。语法:下面是通用的SQL WHERE子句来获取数据从MySQL表的SELECT命令的语法:代码如下SELECT ...