Home >Database >Mysql Tutorial >mysql select 结合where子语句查询结果集

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

WBOY
WBOYOriginal
2016-06-01 09:56:501661browse

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。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn