oracle两张表,主表A的ID 是子表B的formmainId,两张表做left join on id=formmain_id where条件中怎么过滤可以做到只查询到A表的数据记录条数
时间: 2023-09-25 22:06:40 浏览: 63
### 回答1:
在LEFT JOIN ON条件中增加一个过滤条件:B表的formmainId字段为空即可实现。例如:
```
SELECT * FROM A
LEFT JOIN B ON A.ID=B.formmainId
WHERE B.formmainId IS NULL;
```
这样,查询结果中只会包含A表的数据记录。
### 回答2:
要只查询到A表的数据记录条数,可以在where条件中添加过滤条件:
1. 添加A表的条件来限制查询只在A表中进行,例如:利用A表的某个字段(如ID)来判断:
where A.ID is not null
这样可以确保只查询A表中存在的记录。
2. 可以通过限制B表中对应的A表记录(利用A的ID与B的formmainId进行匹配),筛选出只存在于A表中的记录。
where B.formmainId is null
这样可以保证只查询到A表中存在的记录。
综上所述,可以使用以下的SQL语句来实现只查询到A表的数据记录条数:
select count(*)
from A left join B on A.ID = B.formmainId
where A.ID is not null and B.formmainId is null
这样就能够只查询到A表的数据记录条数,而过滤掉与B表相关的数据。
### 回答3:
要只查询到主表A的数据记录条数,可以使用子查询来实现。具体的 SQL 语句如下:
```
SELECT COUNT(*) AS total_count
FROM A
LEFT JOIN B ON A.ID = B.formmainId
WHERE A.ID NOT IN (SELECT B.formmainId FROM B);
```
上述 SQL 语句中,首先将两张表进行左连接,然后使用子查询从表B中获取所有的formmainId,并使用NOT IN语句来过滤只查询在主表A中存在的记录。最后通过COUNT函数统计查询结果的记录条数,并通过AS语句将结果别名为total_count。
执行上述 SQL 语句后,可以得到只包含主表A数据记录条数的查询结果。
相关推荐
![sql](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)