oracle两张表,主表A的ID 是子表B的formmainId,两张表做left join on id=formmainId 且数据中存在a表的id等于b表的formmainId where条件中怎么过滤可以做到只查询到A表的数据记录条数
时间: 2023-02-09 19:56:29 浏览: 97
在 LEFT JOIN 后加上 WHERE 条件,这样就可以过滤掉 B 表中不满足条件的记录。例如:
```
SELECT *
FROM A
LEFT JOIN B ON A.ID = B.formmainId
WHERE A.ID = 123
```
这样只会查询出 A 表 ID 为 123 的记录,并且左连接 B 表后也只会显示 A 表的记录条数。
如果要同时过滤 A 表和 B 表的记录,可以这样写:
```
SELECT *
FROM A
LEFT JOIN B ON A.ID = B.formmainId
WHERE A.ID = 123 AND B.status = 'Active'
```
这样就只会查询出 A 表 ID 为 123 且 B 表状态为 Active 的记录,并且左连接 B 表后也只会显示 A 表的记录条数。
相关问题
oracle两张表,主表A的ID 是子表B的formmainId,两张表做left join on id=formmain_id 且数据中存在a表的id等于b表的formmainId where条件中怎么过滤可以做到只查询到A表的数据记录条数
### 回答1:
可以在 WHERE 子句中使用以下条件来过滤数据:
```
WHERE A.ID = B.FORMMASIN_ID AND A.ID IS NOT NULL
```
这样,您就只能查询到 A 表中有记录的数据。
如果要确保查询到的结果只包含 A 表的记录,您可以使用以下查询:
```
SELECT * FROM A LEFT JOIN B ON A.ID = B.FORMMASIN_ID WHERE B.FORMMASIN_ID IS NULL
```
这样,您将只查询出 A 表中没有匹配记录的数据。
### 回答2:
要实现只查询到主表A的数据记录条数,可以在WHERE条件中添加一个限制条件,即只查询到主表A中的数据。
可以使用以下的SQL查询语句实现:
```sql
SELECT COUNT(*) AS record_count
FROM A
LEFT JOIN B ON A.ID = B.formmainId
WHERE A.ID = B.formmainId;
```
这个查询语句使用LEFT JOIN连接主表A和子表B,并通过"A.ID = B.formmainId"进行关联。然后,使用WHERE条件"A.ID = B.formmainId"来过滤只查询到主表A中的数据。
最后,使用COUNT(*)函数来计算查询到的记录条数,并使用"AS record_count"给结果命名为"record_count"。
执行这个查询语句后,将会返回只查询到主表A的数据记录条数。
### 回答3:
如果只希望查询到主表A的数据记录条数,则可以通过在WHERE条件中添加限制条件来实现。
假设主表A的表名为table_A,子表B的表名为table_B,主表A的ID是子表B的formmainId,通过left join可以使用如下查询语句连接两表:
SELECT *
FROM table_A
LEFT JOIN table_B ON table_A.ID = table_B.formmainId
WHERE table_A.ID = table_B.formmainId;
在WHERE条件中添加了table_A.ID = table_B.formmainId的限制条件,即只有当主表A的ID等于子表B的formmainId时才会查询到对应的数据记录。
如果只需要查询主表A的数据记录条数,可以将查询语句修改为:
SELECT COUNT(*)
FROM table_A
WHERE table_A.ID IN (SELECT formmainId FROM table_B);
这样只会查询到主表A中ID在子表B的formmainId中出现的数据记录条数。
oracle两张表,主表A的ID 是子表B的formmainId,两张表做left join on id=formmain_id where条件中怎么过滤可以做到只查询到A表的数据记录条数
### 回答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数据记录条数的查询结果。
阅读全文