Problems encountered in the execution order of AND and OR in SQL statements

Problems encountered in the execution order of AND and OR in SQL statements

question

I encountered a problem when writing database SQL yesterday. The root of the problem lies in the execution priority of the AND and OR keywords in SQL statements. Let's test this issue.

Scenario

1. There is a student table Student, the table fields include Id (user primary key), Name (user name), Grade (grade), Class (class), Sex (gender). as follows:

Table Structure

2. Import ten test data into the table as follows:

Table Data

3. Now you need to find out the female students in grade 1 who are female, or the female students in class 2 who are female. The SQL statement is as follows:
select * from student where sex='女' and grade=1 or class=2
However, the result of the SQL query does not meet the requirements. The execution results are as follows:

Execution Results

The execution result also found male students in class 2, which is obviously incorrect.

4. Modify the SQL statement and add brackets. as follows:

select * from student where sex='女' and (grade=1 or class=2)

The result of the SQL query meets the requirements

analyze

From the above scenario, the key to the problem lies in the execution order of AND and OR.
According to the data, the priority of relational operators from high to low is: NOT >AND >OR
If there is an OR condition after where, OR will automatically separate the left and right query conditions.
Just like the first statement in the above scenario, its query condition is divided into two parts (or):

1. sex = 'female' and grade = 1
2. class=2

This means finding out the female students in grade 1 and the students in class 2. Does not meet the requirements of the original query.
The solution is to use brackets to distinguish the order of execution <br /> As in the second statement in the above scenario, the query condition is divided into two parts (and):

1. sex = 'female' 
2. (grade=1 or class=2)

You may also be interested in:
  • SQL statement execution order graphic description
  • Detailed explanation of SQL statement execution order
  • In-depth explanation of SQL statement execution (MySQL architecture overview -> query execution process -> SQL parsing order)
  • Learn SQL query execution order from scratch
  • This article tells you what the execution order of Sql is

<<:  Linux (center OS7) installs JDK, tomcat, mysql to build a java web project running environment

>>:  How to use axios to filter multiple repeated requests in a project

Recommend

Example of integrating Kafka with Nginx

background nginx-kafka-module is a plug-in for ng...

Use Docker to build a Redis master-slave replication cluster

In a cluster with master-slave replication mode, ...

Docker beginners' first exploration of common commands practice records

Before officially using Docker, let's first f...

MySQL optimization tutorial: large paging query

Table of contents background LIMIT Optimization O...

How to change password in MySQL 5.7.18

How to change the password in MySQL 5.7.18: 1. Fi...

Five ways to traverse objects in javascript Example code

Table of contents Prepare Five weapons for…in Obj...

Solution for FileZilla 425 Unable to connect to FTP (Alibaba Cloud Server)

Alibaba Cloud Server cannot connect to FTP FileZi...

Vue implements Tab tab switching

This article example shares the specific code of ...

Detailed explanation of using Vue.prototype in Vue

Table of contents 1. Basic Example 2. Set the sco...

Sample code for seamless scrolling with flex layout

This article mainly introduces the sample code of...

Graphical tutorial on installing JDK1.8 under CentOS7.4

Linux installation JDK1.8 steps 1. Check whether ...

The use and difference between JavaScript pseudo-array and array

Pseudo-arrays and arrays In JavaScript, except fo...

Some tips on deep optimization to improve website access speed

Some tips for deep optimization to improve websit...