gpt4 book ai didi

mysql - INNER JOIN 仅显示表中的第一行

转载 作者:行者123 更新时间:2023-11-29 05:51:14 25 4
gpt4 key购买 nike

我的数据库中有以下数据:

scu_banks:

---------------------------------
| id | type | name |
|-------------------------------|
| 1 | 1 | One |
| 2 | 1 | Two |
| 3 | 2 | Three |
| 4 | 3 | Four |
---------------------------------

scu_语句:

---------------------------------
| id | code | mutation |
|-----------------------------------|
| 1 | 1 | 100 |
| 2 | 1 | 200 |
| 3 | 2 | 500 |
| 4 | 1 | 500 |
-------------------------------------

我想做的是选择表 scu_banks 中的所有行并显示突变的总和。数据应表示为:

--------------------------------------------------------------
| scu_banks.type | scu_banks.name | total | scu_banks.id |
--------------------------------------------------------------
| 1 | One | € 800.00 | 1 |
| 1 | Two | € 500.00 | 2 |
| 2 | Three | € 0.00 | 3 |
| 3 | Four | € 0.00 | 4 |
--------------------------------------------------------------

当我运行我的 sql 语句时,我得到以下数据:

---------------------------------------------------------------
| scu_banks.type | scu_banks.name | total | scu_banks.id |
--------------------------------------------------------------
| 1 | One | € 1300.00 | 1 |
---------------------------------------------------------------

我在这种情况下得到的数据是不正确的。 € 1300.00 它是表 scu_statement 中所有突变的总和。该语句也不显示数据库中的其他行。

有人知道我的sql语句有什么问题吗?

这是我的sql语句:

SELECT      scu_banks.type,
scu_banks.name,
CONCAT('€ ', FORMAT(IFNULL(SUM(scu_statement.mutations), 0),2)) AS total,
scu_banks.id
FROM scu_banks
INNER JOIN scu_statement
ON scu_banks.id = scu_statement.code

最佳答案

在子查询中进行聚合并将其连接到银行。

SELECT b.type "scu_banks.type",
b.name "scu_banks.name",
concat('€ ', format(coalesce(x.mutation, 0), 2)) "total",
b.id "scu_banks.id"
FROM scu_banks b
LEFT JOIN (SELECT s.code,
sum(s.mutation) mutation
FROM scu_statement s
GROUP BY s.code) x
ON x.code = b.id;

关于mysql - INNER JOIN 仅显示表中的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53918688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com