Table of Contents
Preface
Example
Home Database Mysql Tutorial The basic usage of mysql left join and the difference between on and where

The basic usage of mysql left join and the difference between on and where

Jun 02, 2023 pm 11:54 PM
mysql where left join

Preface

When we write SQL statements, we cannot avoid using connection keywords, such as inner connections and outer connections. There are many types. I will post here a picture I found elsewhere:

The basic usage of mysql left join and the difference between on and where

I think this picture is very detailed. It shows the SQL statements. Common link types, taking left join in this article as an example, are defined online as follows: The LEFT JOIN keyword will return all rows from the left table, even if there are no matching rows in the right table.

In fact, just from the literal meaning, left join is relatively easy to understand, but in the process of using it, there will still be some problems, such as the condition after on and after After where, their results are completely different. Next, we will learn about left join from shallow to deep.

Example

CREATE TABLE `class` (
  `class_id` int NOT NULL,
  `class_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `class_grade` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (`class_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=COMPACT;
Copy after login

score table:

CREATE TABLE `score` (
  `class_id` int NOT NULL,
  `stu_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `score` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=COMPACT;
Copy after login

They each have data:

The basic usage of mysql left join and the difference between on and where

The basic usage of mysql left join and the difference between on and where

Q1: select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id.

This sentence can be rewritten as: We analyzed this statement. The left table is the class table, the right table is the score table, and their associated field is class_id. When the class_id in the left table is 1, there are two records in the right table with class_id 1; when the class_id in the left table is 2, the class_id in the two records in the right table is 2; when the class_id in the left table is 3, there is one record in the right table The class_id of the record is 3, so we should get five records:

1	语文	A	A002	82
1	语文	A	A001	91
2	数学	B	A002	87
2	数学	B	A001	95
3	英语	C	B003	65
Copy after login

Q2: select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id and s.score=90.
Based on the example of the first question, this one has an additional condition of s.score=90. This means that the score field of the right table score is 90, but when we look at the data in the table, we find that there is no score of 90 in the right table. , ok, will the result be empty? After all, the table on the right does not have data that meets the conditions.

In fact, if you execute this SQL statement, you will eventually get the result, but you will only get three pieces of data. All fields in the left table are displayed, and all fields in the right table are empty. This is because there is no record in the right table with a score of 90, so the fields in the right table are empty.

on filters the data first and then connects it, while where filters the data after performing a related query between the two tables. The difference between on and where is here, and will be covered in subsequent examples. These two are different.

1	语文	A		
2	数学	B		
3	英语	C
Copy after login
Copy after login
Copy after login

Q3: select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id where c.class_name=&lsquo ;Chinese’ and s.score=90.

You need to pay attention to the difference between where and on, because this statement involves the where keyword. The query result of this sql is empty. This is because the two tables are connected to query the results first, and then filtered. The result of the query of the connected table is that there is no record matching class_name=‘中文’, and score=90, so The query result is empty.

Q4: select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id and 1=0.

We sometimes add 1=1 after the where condition of SQL, and 1=0 here means that the association between the two tables has failed, so the result will only display the data from the left table.

1	语文	A	null	null
2	数学	B	null	null
3	英语	C	null	null
Copy after login
Copy after login

Q5: select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on 1=0.

The execution result of this is the same as the above SQL statement. In fact, all the contents of the left table are displayed.

1	语文	A	null	null
2	数学	B	null	null
3	英语	C	null	null
Copy after login
Copy after login

Q6: select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id and c.class_name=&lsquo "Chinese".

This requires filtering out the records with class_name as language in the right table, there are two, and then connecting the two records in the left table, so it is not difficult to see that there are four results:

1	语文	A	A002	82
1	语文	A	A001	91
2	数学	B	null	null
3	英语	C	null	null
Copy after login

Q7: select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id and c.class_name=‘English’.

Analyze the same question as the previous one (the result in the blank area is null):

1	语文	A		
2	数学	B		
3	英语	C	B003	65
Copy after login

Q8: select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id and c.class_name=‘体育’.

There is no data in the right table and the class_name is sports, so the right table is empty. All data in the left table is displayed. The corresponding fields in the right table are empty:

1	语文	A		
2	数学	B		
3	英语	C
Copy after login
Copy after login
Copy after login

Q9: select c .class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id and c.class_name=‘中文’ and s.score=91.

右表中只有一条记录的score为91,所以需要拿左表与右表的这一条数据进行关联,左表只有语文可以与右表的那一条数据对上,所以结果为:

1	语文	A	A001	91
2	数学	B		
3	英语	C
Copy after login

Q10:select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id and c.class_name=‘体育’ and s.score=90。

右表中没有数据的score为90,同样左表中也没有class_name为体育,但是这并不意味着最后的结果就是空了,只要没有where条件,最终的结果数量最起码也会是左表中原先的数据数量,所以这条sql会返回左表的全部数据。

1	语文	A		
2	数学	B		
3	英语	C
Copy after login
Copy after login
Copy after login

Q11:select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id where c.class_name=‘英语’。

需要注意的点:条件是在where中的,也就是在表关联之后,再进行过滤的,所以最终的结果只会有一条:

3	英语	C	B003	65
Copy after login

Q12:select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id where s.score=91。

和上面一样,是在连表查询之后,找出score=90的数据:

1	语文	A	A001	91
Copy after login
Copy after login

Q12;select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id where c.class_name=‘语文’ and s.score=91。

我们将两表连接查询后,找出结果中class_name为语文,score为91的记录,只有一条:

1	语文	A	A001	91
Copy after login
Copy after login

The above is the detailed content of The basic usage of mysql left join and the difference between on and where. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

MySQL: An Introduction to the World's Most Popular Database MySQL: An Introduction to the World's Most Popular Database Apr 12, 2025 am 12:18 AM

MySQL is an open source relational database management system, mainly used to store and retrieve data quickly and reliably. Its working principle includes client requests, query resolution, execution of queries and return results. Examples of usage include creating tables, inserting and querying data, and advanced features such as JOIN operations. Common errors involve SQL syntax, data types, and permissions, and optimization suggestions include the use of indexes, optimized queries, and partitioning of tables.

MySQL's Place: Databases and Programming MySQL's Place: Databases and Programming Apr 13, 2025 am 12:18 AM

MySQL's position in databases and programming is very important. It is an open source relational database management system that is widely used in various application scenarios. 1) MySQL provides efficient data storage, organization and retrieval functions, supporting Web, mobile and enterprise-level systems. 2) It uses a client-server architecture, supports multiple storage engines and index optimization. 3) Basic usages include creating tables and inserting data, and advanced usages involve multi-table JOINs and complex queries. 4) Frequently asked questions such as SQL syntax errors and performance issues can be debugged through the EXPLAIN command and slow query log. 5) Performance optimization methods include rational use of indexes, optimized query and use of caches. Best practices include using transactions and PreparedStatemen

Why Use MySQL? Benefits and Advantages Why Use MySQL? Benefits and Advantages Apr 12, 2025 am 12:17 AM

MySQL is chosen for its performance, reliability, ease of use, and community support. 1.MySQL provides efficient data storage and retrieval functions, supporting multiple data types and advanced query operations. 2. Adopt client-server architecture and multiple storage engines to support transaction and query optimization. 3. Easy to use, supports a variety of operating systems and programming languages. 4. Have strong community support and provide rich resources and solutions.

How to connect to the database of apache How to connect to the database of apache Apr 13, 2025 pm 01:03 PM

Apache connects to a database requires the following steps: Install the database driver. Configure the web.xml file to create a connection pool. Create a JDBC data source and specify the connection settings. Use the JDBC API to access the database from Java code, including getting connections, creating statements, binding parameters, executing queries or updates, and processing results.

How to start mysql by docker How to start mysql by docker Apr 15, 2025 pm 12:09 PM

The process of starting MySQL in Docker consists of the following steps: Pull the MySQL image to create and start the container, set the root user password, and map the port verification connection Create the database and the user grants all permissions to the database

MySQL's Role: Databases in Web Applications MySQL's Role: Databases in Web Applications Apr 17, 2025 am 12:23 AM

The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

Laravel Introduction Example Laravel Introduction Example Apr 18, 2025 pm 12:45 PM

Laravel is a PHP framework for easy building of web applications. It provides a range of powerful features including: Installation: Install the Laravel CLI globally with Composer and create applications in the project directory. Routing: Define the relationship between the URL and the handler in routes/web.php. View: Create a view in resources/views to render the application's interface. Database Integration: Provides out-of-the-box integration with databases such as MySQL and uses migration to create and modify tables. Model and Controller: The model represents the database entity and the controller processes HTTP requests.

How to install mysql in centos7 How to install mysql in centos7 Apr 14, 2025 pm 08:30 PM

The key to installing MySQL elegantly is to add the official MySQL repository. The specific steps are as follows: Download the MySQL official GPG key to prevent phishing attacks. Add MySQL repository file: rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm Update yum repository cache: yum update installation MySQL: yum install mysql-server startup MySQL service: systemctl start mysqld set up booting

See all articles