列举:IN 与 NOT IN
57.10 列举:IN 与 NOT IN
IN (值1,值2,...) 匹配列表中任意一个,等价于多个 OR。
NOT IN 排除列表中的值;列表含 NULL 时 NOT IN 结果可能为空,需注意。
💡 IN 列表较长时用 executemany 拼占位符,不要拼接用户输入。
按班级、姓名列表查
import pymysql
conn = pymysql.connect(host='127.0.0.1', user='root', password='root', database='py_demo', charset='utf8mb4')
try:
with conn.cursor() as cur:
cur.execute(
'SELECT name, class_name FROM students WHERE class_name IN (%s, %s)',
('一班', '二班')
)
print(cur.fetchall())
names = ('小明', '小刚', '小华')
placeholders = ','.join(['%s'] * len(names))
cur.execute(f'SELECT name, score FROM students WHERE name IN ({placeholders})', names)
print(cur.fetchall())
finally:
conn.close()