【发布时间】:2019-10-25 09:55:42
【问题描述】:
我有两张桌子:
1.从 gas_trades_bids 中选择 *;
+----+---------+----------+--------+------------+------------+
| id | user_id | claim_id | amount | lots_value | timestmp |
+----+---------+----------+--------+------------+------------+
| 5 | 9 | 11 | 60 | NULL | 1571317861 |
| 6 | 9 | 11 | 100 | NULL | 1571656888 |
| 7 | 9 | 11 | 50 | NULL | 1571727353 |
| 8 | 9 | 11 | 50 | NULL | 1571918296 |
+----+---------+----------+--------+------------+------------+
4 rows in set (0.00 sec)
2。 SELECT * FROM gas_trades_offers;
+----+---------+----------+--------+------------+----------+------------+
| id | user_id | claim_id | amount | lots_value | accepted | timestmp |
+----+---------+----------+--------+------------+----------+------------+
| 8 | 9 | 11 | 33 | 22 | NULL | 1571918576 |
| 9 | 9 | 11 | 33 | 22 | 1 | 1571918576 |
| 10 | 9 | 11 | 33 | 22 | 1 | 1571918576 |
+----+---------+----------+--------+------------+----------+------------+
3 rows in set (0.01 sec)
目标是:
- 计算 gas_trades_bids.claim_id = gas_trades_offers_claim_id 和 gas_trades_bids.claim_id = 11 和 gas_trades_bids.user_id = 11 的行数
- 获取 gas_trades_offers.lots_value 列值的总和
为了达到这个目的,我尝试运行:
SELECT COUNT(bids.id) amount, SUM(offers.lots_value)
FROM gas_trades_offers offers, (SELECT * FROM gas_trades_bids) bids
WHERE bids.user_id = 9
AND bids.user_id = offers.user_id
但我有多行:'
+--------+------------------------+
| amount | SUM(offers.lots_value) |
+--------+------------------------+
| 3 | 66 |
| 3 | 66 |
| 3 | 66 |
| 3 | 66 |
+--------+------------------------+
4 rows in set (0.01 sec)
我做错了什么?
我预计只会得到:
+--------+------------------------+
| amount | SUM(offers.lots_value) |
+--------+------------------------+
| 3 | 66 |
+--------|------------------------|
我不需要使用 GROUP BY!
【问题讨论】:
-
@Casper Nah,我不需要使用 GROUP BY 语法。你错了
-
您要计算哪个表(id)?我不太明白这一点。你能解释更多吗?如果从出价计数将返回 4,从订单计数将返回 3
-
@momo 我想计算
gas_trades_bids中的行数,其中claim_id列应该等于gas_trades_offers.claim_id -
您的意思是gas_trades_bids.claim_id 列的值应该存在于gas_trades_offers 中的哪个位置?