[英]SQL Query SELECT Count & Sum from a table that uses another table
我正在尝试使用B这是另一个表B.CheckerID IS NOT NULL AND A.DBDivRecID='3485'
另一个表时, B.CheckerID IS NOT NULL AND A.DBDivRecID='3485'
A中特定列的总和和计数,
因此它将获得A的总和和计数,其中B.CheckerID IS NOT NULL A.DBDivRecID='3485'
我这样做了,但是我得到了表A和表B的合并结果,我发现两个表的DBShares列都命名相同, 我只希望表A的总DBShares,只需要表B来检查CheckerID
SELECT SUM(A.DBShares) As totalshares,COUNT(*) As totalcounts
FROM ShrDivBenf As A
INNER JOIN TEMPDRP_3485 AS B ON A.DBDivRecID=B.DBDivRecID
WHERE B.CheckerID IS NOT NULL AND A.DBDivRecID='3485'
我想要这样的东西( 表B中的WHERE CheckerID不为null )
SELECT SUM(A.DBShares) As totalshares,COUNT(*) As totalcounts
FROM ShrDivBenf As A
WHERE CheckerID IS NOT NULL
样品
表A
+------------+----------+-------+
| DBDivRecID | DBShares |Name |
+------------+----------+-------+
| 3485 | 5000 |John |
| 3485 | 6000 |Mary |
| 3485 | 7000 |Sam |
+------------+----------+-------+
表B
+------------+-----------+----------+--------+
| DBDivRecID | CheckerID | DBShares | DBName |
+------------+-----------+----------+--------+
| 3485 | 4555 | 5000 | John |
| 3485 | 4555 | 6000 | Mary |
| 3485 | 4555 | 7000 | Sam |
| 3485 | NULL | 8000 | Derek |
+------------+-----------+----------+--------+
可以说如果我这样做
SELECT A.DbName, A.DbShares
FROM ShrDivBenf As A
INNER JOIN TEMPDRP_3485 AS B ON A.DBDivRecID=B.DBDivRecID
WHERE B.CheckerID IS NOT NULL AND A.DBDivRecID='3485'
我会得到的(即使我的数据库只有1个John,Mary和Sam,它也会重复整个过程)
+----------+----------+
| DbName | DBShares |
+----------+----------+
| John | 5000 |
| Mary | 6000 |
| Sam | 7000 |
| John | 5000 |
| Mary | 6000 |
| Sam | 7000 |
+----------+----------+
由于您有几行具有相同的DBDivRecID
,因此在加入时会得到笛卡尔积。 避免这种情况的一种方法是更换join
用in
运营商:
SELECT SUM(A.DBShares) As totalshares, COUNT(*) As totalcounts
FROM ShrDivBenf
WHERE DBDivRecID='3485' AND
DBDivRecID IN (SELECT DBDivRecID
FROM TEMPDRP_3485
WHERE CheckerID IS NOT NULL)
我想我明白你想要什么; 您正在寻找没有空检查器的记录。 鉴于此,请尝试以下操作:
SELECT SUM(A.DBShares) As totalshares, COUNT(*) As totalcounts
FROM ShrDivBenf
WHERE DBDivRecID='3485' AND
DBDivRecID NOT IN (SELECT DBDivRecID
FROM TEMPDRP_3485
WHERE CheckerID IS NULL)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.