mysql - 在 JOIN 表上应用 DISTINCT 不起作用

标签 mysql group-by distinct

我的查询是根据 woks 表(由 3 部分组成)对费用进行求和,结果应该是 13000,但我得到的是 39000。

# Order table

-------------------------------------------
| Id  | order              | Name | Fee   |
-------------------------------------------
|   1 | SELECT STATEMENT   |  ab  | 13000 | 
-------------------------------------------

# Work table
-----------------------------
| Id  | user id  | order id | 
-----------------------------
|  1  |    123   |    1     | 
|  2  |    123   |    1     | 
|  3  |    123   |    1     | 
-----------------------------


# Query 
SELECT o.order_id, SUM(o.fee) AS total_words
FROM users AS u
LEFT JOIN works AS wr ON wr.user_id = u.id
LEFT JOIN orders AS o ON o.order_id = wr.order_id
    WHERE u.id = 123

# Output =>     
Array
(
     [order_id] => 1
     [fee] => 39000
)

我尝试过 DISTINCT 和 group by 但得到了相同的结果。

最佳答案

<强> SQL Fiddle Demo

SELECT `user_id`, SUM(orders.`Fee`)
FROM (SELECT DISTINCT `user_id`, `order_id`
      FROM works
     ) as user_work
JOIN orders
   ON user_work.`order_id` = orders.`Id`
WHERE user_work.user_id = 123

输出

| user_id | SUM(orders.`Fee`) |
|---------|-------------------|
|     123 |             13000 |

关于mysql - 在 JOIN 表上应用 DISTINCT 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35229868/

相关文章:

mysql - 如何在MYSQL中按公司对员工进行分组

mysql - 多主(n >=3 个节点)范式

mysql - 用 3 个关系保存数据 eloquent

python - Pandas 等效选择计数(不同的 col1,col2)按 col3 分组

Mysql分组与计数

sql - PostgreSQL 中的 GROUP BY 和 COUNT

MySQL:选择一组不同(char_length(text_column))记录中的顶部结果

php - 显示每个用户创建的行数

php - 将此函数转换为 PDO

mysql - MySQL查询记录如何从大到小排序