如何查询 MySQL 数据库中不包含指定数据的行(mysql 不包含数据)

如何查询 MySQL 数据库中不包含指定数据的行?

在实际工作中,我们经常需要查询数据库中不包含指定数据的行。这里介绍两种方法来实现此功能:使用 NOT IN 运算符和使用 LEFT JOIN。

方法一:使用 NOT IN 运算符

NOT IN 运算符用于排除一组值。下面的 SQL 语句演示如何使用 NOT IN 运算符来查询不包含指定数据的行:

“`sql

SELECT *

FROM table_name

WHERE column_name NOT IN (value1, value2, …);


其中,“table_name” 是要查询的表名,“column_name” 是要排除的列名,括号里面的是要排除的值。例如,要查询“students”表中不是“IT”专业的所有学生:

```sql
SELECT *
FROM students
WHERE major NOT IN ('IT');

方法二:使用 LEFT JOIN

LEFT JOIN 是一种联结表的方式,它返回左表中的所有行以及右表中匹配的行。如果右表中没有匹配的行,则返回 NULL。利用这个特性,我们可以使用 LEFT JOIN 来查询不包含指定数据的行。下面的 SQL 语句演示如何使用 LEFT JOIN 运算符来查询不包含指定数据的行:

“`sql

SELECT table1.*

FROM table1

LEFT JOIN table2 ON table1.column_name = table2.column_name

WHERE table2.column_name IS NULL;


其中,“table1” 是要查询的表名,table2 是要排除的表名,“column_name” 是要排除的列名。例如,要查询“students”表中不是“IT”专业的所有学生:

```sql
SELECT students.*
FROM students
LEFT JOIN majors ON students.major=majors.name
WHERE majors.name IS NULL;

通过上面两种方法,我们可以查询出不包含指定数据的行。具体使用哪种方式,根据实际情况选择。

代码示例:

以 Python 语言的 pymysql 模块为例,以下是查询 MySQL 数据库中不包含指定数据的行的完整代码:

“`python

import pymysql

db = pymysql.connect(host=”localhost”, user=”root”, password=”password”, database=”test”)

# 方法一

cursor = db.cursor()

sql = “SELECT * FROM students WHERE major NOT IN (‘IT’)”

cursor.execute(sql)

result = cursor.fetchone()

while result:

print(result)

result = cursor.fetchone()

# 方法二

cursor = db.cursor()

sql = “SELECT students.* FROM students LEFT JOIN majors ON students.major=majors.name WHERE majors.name IS NULL”

cursor.execute(sql)

result = cursor.fetchone()

while result:

print(result)

result = cursor.fetchone()

db.close()


该示例代码连接本地主机的 MySQL 数据库,查询“students”表中不是“IT”专业的所有学生,并将结果打印出来。使用方法一或方法二中的任意一种即可。

数据运维技术 » 如何查询 MySQL 数据库中不包含指定数据的行(mysql 不包含数据)