mysql 得到模糊查询没有满足条件的数据
时间: 2023-11-24 07:14:40 浏览: 85
在 MySQL 中,如果你执行模糊查询但没有满足条件的数据,你可以通过使用 `NOT EXISTS` 或 `LEFT JOIN` 来筛选出这些数据。以下是两种方法的示例:
1. 使用 `NOT EXISTS`:
```sql
SELECT column1, column2, ...
FROM your_table
WHERE NOT EXISTS (
SELECT 1
FROM your_table
WHERE your_column LIKE '%your_condition%'
);
```
2. 使用 `LEFT JOIN`:
```sql
SELECT column1, column2, ...
FROM your_table
LEFT JOIN (
SELECT column1, column2, ...
FROM your_table
WHERE your_column LIKE '%your_condition%'
) AS filtered_table ON your_table.primary_key = filtered_table.primary_key
WHERE filtered_table.primary_key IS NULL;
```
请将示例中的 `your_table` 替换为你的表名,`your_column` 替换为你要进行模糊查询的列名,`your_condition` 替换为你的查询条件。使用这些方法,你可以得到没有满足条件的数据。
相关问题
mysql模糊查询和条件查询一块
MySQL中,模糊查询可以使用LIKE关键字,它可以帮助我们在查询时忽略掉字符串中的某些部分,从而达到模糊匹配的效果。例如:
```
SELECT * FROM table_name WHERE column_name LIKE '%keyword%';
```
以上语句会查询出所有column_name列中包含keyword关键字的行。
而条件查询则是使用WHERE关键字,可以在查询时加入条件,只查询满足条件的数据。例如:
```
SELECT * FROM table_name WHERE column_name = 'value';
```
以上语句会查询出所有column_name列等于value的行。
需要注意的是,在进行条件查询时,应当尽量避免使用通配符(如%),因为这会导致查询效率变慢。
mysql模糊查询最底一层数据
要在MySQL中进行模糊查询并找到最底层的数据,你可以使用递归查询或使用自连接来实现。下面是两种方法的示例:
方法一:使用递归查询
```sql
WITH RECURSIVE cte AS (
SELECT id, parent_id, name
FROM your_table
WHERE parent_id IS NULL -- 根节点
UNION ALL
SELECT t.id, t.parent_id, t.name
FROM your_table AS t
INNER JOIN cte ON t.parent_id = cte.id
)
SELECT *
FROM cte
WHERE name LIKE '%keyword%' AND id NOT IN (SELECT parent_id FROM your_table)
```
上述查询使用CTE(Common Table Expression)和递归查询来获取所有的层级关系,并筛选出满足模糊查询条件并且没有子节点的最底层数据。
方法二:使用自连接查询
```sql
SELECT t1.*
FROM your_table AS t1
LEFT JOIN your_table AS t2 ON t1.id = t2.parent_id
WHERE t1.name LIKE '%keyword%' AND t2.id IS NULL
```
上述查询使用自连接将表与自身连接,并筛选出满足模糊查询条件并且没有子节点的最底层数据。
注意,以上示例中的"your_table"是你的表名,"keyword"是你要查询的关键字。你需要根据自己的实际情况修改这些部分。
阅读全文