如何查询 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”专业的所有学生:
```sqlSELECT *
FROM studentsWHERE 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”专业的所有学生:
```sqlSELECT students.*
FROM studentsLEFT 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”专业的所有学生,并将结果打印出来。使用方法一或方法二中的任意一种即可。