gpt4 book ai didi

MySQL:仅加入单行

转载 作者:行者123 更新时间:2023-11-29 03:48:04 25 4
gpt4 key购买 nike

我有一个表 data 看起来像这样

idOne | date | input
------------------
1 | 2015-01-01 | 423
2 | 2015-01-01 | 342
1 | 2015-01-02 | 343
2 | 2015-01-02 | 332

我在这张 table 上:

SELECT date, SUM(input)
FROM data
WHERE date BETWEEN "2015-01-01" AND "2015-01-02"
GROUP BY date

这给了我这个输出:

date | input
------------------
2015-01-01 | 765
2015-01-02 | 675

我的数据库中还有一张表,info:

idTwo | idOne | label
------------------
1 | 1 | 'Hello, '
2 | 2 | 'World!'
3 | 1 | 'Hello, '
4 | 2 | 'World!'

如您所见,该数据库并未完全规范化,但这是我所拥有的。

我想根据 SELECT 语句中 label 的值进行过滤。这让我很头疼!每次我尝试我的行都会多次求和。例如:

SELECT date, SUM(input)
FROM data, info
WHERE date BETWEEN "2015-01-01" AND "2015-01-02"
AND data.idOne = info.idOne
AND label = 'Hello,'
GROUP BY date

对 everthing 求和两次并给我这个输出:

date | input
------------------
2015-01-01 | 1530
2015-01-02 | 1350

我该如何解决这个问题?谢谢。

最佳答案

如果你想从第一个表中得到准确的总和,那么你可能需要 exists:

SELECT date, SUM(input)
FROM data d
WHERE date BETWEEN '2015-01-01' AND '2015-01-02' AND
EXISTS (SELECT 1 FROM info i WHERE d.idOne = i.idOne AND i.label = 'Hello,')
GROUP BY date;

您还应该学习使用显式 join 语法。简单规则:永远不要在 FROM 子句中使用逗号。

关于MySQL:仅加入单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30262691/

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