MYSQL COUNT(column) 意外返回多行

标签 mysql select count

我有两个表:

<强>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。从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)

目标是:

  1. 计算gas_trades_bids.claim_id = Gas_trades_offers_claim_id、gas_trades_bids.claim_id = 11 且gas_trades_bids.user_id = 11 的行数
  2. 获取 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!

最佳答案

这正是您所需要的吗?希望这个查询能够顺利运行。

SELECT COUNT(offers.id) amount,
       SUM(offers.lots_value)
FROM gas_trades_offers offers
WHERE offers.user_id = 9 and offers.claim_id = 11
      AND exists (SELECT id FROM gas_trades_bids bids WHERE bids.claim_id = offers.claim_id and bids.user_id = offers.user_id)

关于MYSQL COUNT(column) 意外返回多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58556238/

相关文章:

validation - 如何在 Laravel4 中验证选择框输入

java - 第一个字符在字符串中出现多少次

mysql - 如何使用sql获取满足一定条件的结果?

PHPEXCEL : How to merge excel row based on array value

mysql - 将列从一个表更新到另一个mysql

php - 更改实时站点(Codeigniter,但不特定于它)

mysql - 如何编写用于在 sqlite 数据库中拆分、提取的选择查询?

Mysql如何统计多个表的数据,有多个条件

MySQL 从同一个连接表中的多个列中获取 COUNT

python - 从两个列表创建字典?在取平均值时?