猎人文案网-美好文案都值得收藏

猎人文案网-美好文案都值得收藏

mysql不包含语句怎么使用?

59

在MySQL中,如果你想要查询某个字段不包含特定值的记录,可以使用以下几种方法:

使用 NOT LIKE 结合通配符

```sql

SELECT * FROM table_name WHERE field_name NOT LIKE '%value%';

```

例如,查询所有名字中不包含“李”的记录:

```sql

SELECT * FROM students WHERE name NOT LIKE '%李%';

```

使用 NOT REGEXP 或 NOT RLIKE

```sql

SELECT * FROM table_name WHERE field_name NOT REGEXP '.*value.*';

```

例如,查询所有名字中不包含“李”的记录:

```sql

SELECT * FROM students WHERE name NOT REGEXP '.*李.*';

```

使用 CASE 语句结合条件表达式

```sql

SELECT *,

CASE WHEN field_name LIKE '%value%' THEN '包含' ELSE '不包含' END AS contains_value

FROM table_name;

```

例如,查询所有名字中包含或不包含“李”的记录:

```sql

SELECT *,

CASE WHEN name LIKE '%李%' THEN '包含' ELSE '不包含' END AS contains_name

FROM students;

```

使用 FIND_IN_SET 函数的反向逻辑

```sql

SELECT * FROM table_name WHERE FIND_IN_SET(field_name, 'value1,value2,value3...') = 0;

```

例如,查询所有名字不在“1,2,3”列表中的记录:

```sql

SELECT * FROM students WHERE FIND_IN_SET(name, '1,2,3') = 0;

```

使用 POSITION 或 INSTR 函数的否定

```sql

SELECT * FROM table_name WHERE POSITION(field_name IN 'value1,value2,value3...') = 0;

```

例如,查询所有名字中不包含“李”的记录:

```sql

SELECT * FROM students WHERE POSITION(name IN '李') = 0;

```

使用外连接或 NOT IN

```sql

SELECT t1.*

FROM table1 t1

LEFT JOIN table2 t2 ON t1.id = t2.id

WHERE t2.id IS NULL;

```

例如,查询 table1 中不在 table2 中的记录:

```sql

SELECT * FROM employees

WHERE id NOT IN (SELECT id FROM sales);

```

根据你的具体需求和数据类型,可以选择最适合的方法来实现不包含查询。