MySQL 在MySQL中,如何检查一个指定模式的字符串是否不存在于其他字符串中?

MySQL 在MySQL中,如何检查一个指定模式的字符串是否不存在于其他字符串中?

在MySQL中,我们经常需要检查一个指定模式(pattern)的字符串是否存在于一个或多个其他字符串中。有时我们也需要相反的检查:该字符串不存在于其他字符串中。本文将讨论如何在MySQL中实现这一功能,包括使用NOT INNOT EXISTSLEFT JOIN三种方法。

阅读更多:MySQL 教程

示例数据

我们将使用以下示例数据来说明三种方法:

tb1

id name
1 Apple
2 Banana
3 Cherry
4 Durian
5 Fig

tb2

id name
1 Apple
2 Banana
3 Clementine
4 Durian
5 Fig

方法1: 使用NOT IN语句

我们可以使用MySQL中的NOT IN语句来实现该功能。该语句的基本语法如下:

SELECT column_name(s) 
FROM table_name 
WHERE column_name NOT IN (value1, value2, ...);

例如,以下查询将返回不在tb2表中的tb1表的所有记录:

SELECT * FROM tb1
WHERE name NOT IN (SELECT name FROM tb2);

查询结果如下:

| id | name |
| — | —— |
| 3 | Cherry |
如上所示,由于“Apple”、“Banana”、“Durian”和“Fig”在tb2表中存在,因此它们被排除在结果之外。

方法2: 使用NOT EXISTS语句

我们可以使用MySQL中的NOT EXISTS语句来实现该功能。该语句的基本语法如下:

SELECT column_name(s) 
FROM table_name 
WHERE NOT EXISTS (SELECT column_name FROM table_name WHERE condition);

例如,以下查询将返回不在tb2表中的tb1表的所有记录:

SELECT * FROM tb1
WHERE NOT EXISTS (SELECT * FROM tb2 WHERE tb1.name = tb2.name);

查询结果与方法1相同:

id name
3 Cherry

因此,“Apple”、“Banana”、“Durian”和“Fig”在tb2表中存在,因此它们被排除在结果之外。

方法3: 使用LEFT JOIN语句

我们可以使用MySQL中的LEFT JOIN语句来实现该功能。该语句的基本语法如下:

SELECT table1.column_name(s)
FROM table1 
LEFT JOIN table2 
ON table1.column_name = table2.column_name
WHERE table2.column_name IS NULL;

例如,以下查询将返回不在tb2表中的tb1表的所有记录:

SELECT tb1.* 
FROM tb1 
LEFT JOIN tb2 
ON tb1.name = tb2.name 
WHERE tb2.name IS NULL;

查询结果与方法1和方法2相同:

id name
3 Cherry

因此,“Apple”、“Banana”、“Durian”和“Fig”在tb2表中存在,因此它们被排除在结果之外。

结论

本文介绍了在MySQL中三种检查一个指定模式的字符串是否不存在于其他字符串中的方法。基于示例数据,我们可以看到这三种方法的结果是相同的,但是可能因数据量的多少而有所不同。在实际使用中,应该视情况选择合适的方法来实现这一功能。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程