Maison >base de données >tutoriel mysql >mysql select 结合where子语句查询结果集

mysql select 结合where子语句查询结果集

WBOY
WBOYoriginal
2016-06-01 09:56:501661parcourir

WHERE子句

在SELECT语句中,语句首先从FROM子句开始执行,执行后会生成一个中间结果集,然后就开始执行WHERE子句。WHERE子句是对FROM子句生成的结果集进行过滤,对中间结果集的每一行记录,WHERE子句会返回一个布尔值,(TRUE/FALSE),如果TURE,这行记录继续留在结果集中,如果FALSE,则这行记录从结果集中移除。如:

<code class="language-sql">SELECT name FROM student WHERE studentNO = 2</code>

FROM子句返回的中间结果集如下:

<code class="language-sql">studentNO  name
1  张三
2  李四
3  王五
4  赵六</code>

总共4行记录,对每一行记录执行WHERE子句。第一行中studentNO是1,所以studentNO=2表达式返回值为FALSE,这行记录移除。第二行中studentNO是2,所以studentNO=2返回TRUE,这行记录继续保留;同理第三行和第四行记录也移除,执行完WHERE语句后的中间结果集为:

<code class="language-sql">studentNO  name
2  李四</code>

然后执行SELECT语句,最终的结果集为:

<code class="language-sql">name
李四</code>

 

比较运算符

WHERE子句返回布尔值,所以WHERE子句经常会用到比较运算符。比较运算符有:

=  等于

相等或者都等于空

> 大于

>= 大于或等于

不等于

!= 不等于

 

2=2的结果为true,152的结果为true,5!=4的结果为true。

字符串也可以进行比较,'b''k'的结果为false。

时间值可以比较,较早的时间小于较晚的时间。'1980-5-4''1991-2-19'的结果为false。

=比较符与比较符的差别在于,当比较两个空值的时候,=返回unknown,返回为true。

 

子查询中的比较运算符

<code class="language-sql">SELECT studentNO FROM student WHERE studentNO > (SELECT studentNO FROM student WHERE name='李四')</code>

一个子查询可以用于WHERE子句中。上例中是一个标量子查询,子查询只能返回一个标量值。

同样一个行子查询也可以用于WHERE子句中:

<code class="language-sql">SELECT studentNO FROM student WHERE (studentNO,name) = (SELECT studentNO,name FROM student WHERE name='李四')</code>

WHERE子句并不一定带比较运算符,当不带运算符时,会执行一个隐式转换。当0时转化为false,当其他值是转化为true。

 

不带比较运算符的WHERE子句

<code class="language-sql">SELECT studentNO FROM student WHERE 0</code>

则会返回一个空集,因为每一行记录WHERE都返回false。

<code class="language-sql">SELECT studentNO FROM student WHERE 1</code>

或者

<code class="language-sql">SELECT studentNO FROM student WHERE 'abc'</code>

都将返回student表所有行记录的studentNO列。因为每一行记录WHERE都返回true。

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn