MySQL中使用ON子句进行精准查询(mysql中on子句查询)

MySQL中使用ON子句进行精准查询

在MySQL中,ON子句可以用于在执行JOIN操作时筛选出符合条件的记录,从而进行精准的数据查询。在实际应用中,ON子句被广泛地应用于各种类型的查询操作中,帮助用户快速地准确地获取所需的数据。

为了更好地演示ON子句的使用方法,我们先创建一个包含两个表的简单数据库。表名分别为“students”和“courses”。其中“students”表包含学生的信息,包括学生ID和姓名;“courses”表包含课程的信息,包括课程ID和课程名称。这两个表之间的关系是:一个学生可以参加多门课程,一门课程可以有多名学生参加。因此,我们可以通过一个中间表“selection”来连接这两个表,中间表中包含学生ID和课程ID,对应着学生所选的课程。

下面是创建数据库的SQL语句:

CREATE DATABASE Test;

USE Test;

CREATE TABLE students (

stu_id INT NOT NULL AUTO_INCREMENT,

stu_name VARCHAR(20),

PRIMARY KEY (stu_id)

);

CREATE TABLE courses (

cou_id INT NOT NULL AUTO_INCREMENT,

cou_name VARCHAR(20),

PRIMARY KEY (cou_id)

);

CREATE TABLE selection (

sel_id INT NOT NULL AUTO_INCREMENT,

stu_id INT NOT NULL,

cou_id INT NOT NULL,

PRIMARY KEY (sel_id),

FOREIGN KEY (stu_id) REFERENCES students(stu_id),

FOREIGN KEY (cou_id) REFERENCES courses(cou_id)

);

接下来,我们向“students”和“courses”表中插入一些测试数据,并向“selection”表中添加一些学生选课的记录:

INSERT INTO students (stu_name) VALUES (‘Tom’),(‘Jerry’),(‘Marry’),(‘John’),(‘Mike’);

INSERT INTO courses (cou_name) VALUES (‘Math’),(‘Chinese’),(‘English’),(‘Physics’),(‘Chemistry’);

INSERT INTO selection (stu_id,cou_id) VALUES (1,1),(1,2),(1,3),(2,1),(3,3),(3,4),(4,1),(4,3),(5,2),(5,3),(5,5);

现在,我们就可以通过使用ON子句来执行各种类型的查询操作了。以下是几个典型的例子:

1、基本的INNER JOIN查询

SELECT students.stu_id, students.stu_name, courses.cou_id, courses.cou_name

FROM students

INNER JOIN selection ON students.stu_id = selection.stu_id

INNER JOIN courses ON selection.cou_id = courses.cou_id;

这条查询语句将返回以下结果:

+——-+———-+——–+———–+

| stu_id| stu_name | cou_id | cou_name |

+——-+———-+——–+———–+

| 1 | Tom | 1 | Math |

| 1 | Tom | 2 | Chinese |

| 1 | Tom | 3 | English |

| 2 | Jerry | 1 | Math |

| 3 | Marry | 3 | English |

| 3 | Marry | 4 | Physics |

| 4 | John | 1 | Math |

| 4 | John | 3 | English |

| 5 | Mike | 2 | Chinese |

| 5 | Mike | 3 | English |

| 5 | Mike | 5 | Chemistry |

+——-+———-+——–+———–+

这个查询结果显示了所有学生所选的课程,其中“stu_id”和“cou_id”是分别属于“students”和“courses”表的字段,而“stu_name”和“cou_name”则是通过JOIN操作联合起来的结果。

2、利用WHERE和ON子句实现查询条件筛选

SELECT students.stu_id, students.stu_name, courses.cou_id, courses.cou_name

FROM students

INNER JOIN selection ON students.stu_id = selection.stu_id AND students.stu_name = ‘Tom’

INNER JOIN courses ON selection.cou_id = courses.cou_id AND courses.cou_name = ‘Math’;

这个查询语句用到了WHERE和ON子句的组合操作,只返回了学生姓名为Tom,所选的课程为Math的记录。通过添加WHERE条件实现精准查询,可以提高数据查询的效率。

3、多表联合查询

SELECT students.stu_name, courses.cou_name

FROM students

LEFT JOIN selection ON students.stu_id = selection.stu_id

LEFT JOIN courses ON selection.cou_id = courses.cou_id

WHERE students.stu_name IS NULL OR courses.cou_name IS NULL;

这条查询语句通过LEFT JOIN实现了多表联合查询,并过滤掉了那些学生姓名或课程名称为空的记录。

ON子句是MySQL中非常强大和灵活的查询工具。通过灵活运用,我们可以实现各种类型的精准查询操作,从而更好地满足我们的数据需求。


数据运维技术 » MySQL中使用ON子句进行精准查询(mysql中on子句查询)