我有两张桌子
tableA has 41 rows
和
tableB has 3 rows
我试图通过使用左连接的查询来获取这两个表的总行数,但是我获得了比预期更多的行(123)(44)
查询:
SELECT COUNT(*)
FROM tableA as u
LEFT JOIN tableB as d
ON u.uid=d.uid
WHERE
u.uid=912391178669
AND
u.deleted = 0
AND
d.deleted=0
表架构:
TABLEA
id | uid |删除
tableB的
id | uid |删除
答案 0 :(得分:2)
我运行了以下查询它正常工作..你可以检查出来。
SELECT
( SELECT count(*) from table1 where.... )
+ ( SELECT count(*) from table2 where.... )
as total from dual
答案 1 :(得分:1)
我猜你在tableA中有三行,查询中给出了uid。这意味着tableA中的每一行将与tableB中的每一行连接一次,这意味着您将返回41 x 3行或123.
根据您期待的行数,我想知道您是否需要联盟而不是联盟。
Select * from tableA where uid = 912391178669 and deleted = 0
union all
Select * from tableB where uid = 912391178669 and deleted = 0
联合将结合两个查询的结果。连接将在单个查询中组合表格列。
答案 2 :(得分:0)
41*3=123
TableA的每一行都有uid = 912391178669,而tableB的每一行也都有uid,这就是为什么你总共获得123行的原因。使用一些过滤条件来获得所需的结果(如某些AND
条件)
如果您可以向我们展示您的表格列,那么可以帮助您。
左连接不会合并两个表的行 TableA左连接TableB将为您提供满足连接条件的表A的所有行。
答案 3 :(得分:0)
SELECT COUNT(*)
FROM tableA as u
LEFT JOIN tableB as d
ON u.uid=d.uid
AND
u.deleted = d.deleted
WHERE
u.uid=912391178669
AND u.deleted = 0
答案 4 :(得分:0)
SELECT SUM(
(SELECT count(*) from tableA WHERE uid=912391178669)
+ (SELECT count(*) from tableA WHERE uid=912391178669)
) as totalRows