mysql contains 不包含

在MySQL数据库中,我们经常会用到两个关键字来筛选查询结果,分别是LIKE和IN。LIKE用于模糊匹配字符串,而IN则用于匹配一系列的值。但是在某些情况下,我们需要查询不包含某个特定值的结果,这时就需要用到NOT LIKE和NOT IN,或者使用NOT EXISTS来实现。
NOT LIKE
NOT LIKE用于查询不包含特定字符串的结果。例如,如果我们想要查询所有名字中不包含”John”的用户:
SELECT * FROM users
WHERE name NOT LIKE '%John%';
这个查询会返回所有名字中不包含”John”的用户信息。关键点在于NOT LIKE '%John%'这个条件,它表示不包含”John”的字符串。
NOT IN
NOT IN用于查询不包含在指定值列表中的结果。例如,如果我们想要查询所有不属于某个组的用户:
SELECT * FROM users
WHERE group_id NOT IN (1, 2, 3);
这个查询会返回所有group_id不在(1, 2, 3)这个值列表中的用户信息。
NOT EXISTS
除了使用NOT IN外,还可以使用NOT EXISTS来实现查询不包含特定值的结果。例如,如果我们想要查询所有没有订单的用户:
SELECT * FROM users u
WHERE NOT EXISTS (
SELECT 1 FROM orders o
WHERE u.user_id = o.user_id
);
这个查询会返回所有users表中没有对应订单的用户信息。NOT EXISTS子查询会检查orders表中是否存在与users表中相同user_id的记录,如果不存在则返回true。
总结
在MySQL中,要查询不包含特定值的结果,可以使用NOT LIKE、NOT IN或NOT EXISTS。这些关键字可以帮助我们更精准地筛选出需要的数据,提高查询效率。
极客笔记