gpt4 book ai didi

mysql - AND 语句分组 - MySQL

转载 作者:行者123 更新时间:2023-11-29 12:57:41 25 4
gpt4 key购买 nike

五年来我第一次回到 MySQL。编写查询来运行一些报告。首先,我需要根据颜色 ID 查找第 1 部门今年分配了多少加仑油漆。该部门位于与我们所有交易不同的表中。我写了这个查询 -

SELECT m.divName, 
n.colorName,
n.colorID,
SUM(n.gallons) as totalGallons
FROM mfccnStore m, netTran2014 n
WHERE (m.division = 1) AND (m.store = n.store)
GROUP BY colorID
ORDER BY totalGallons DESC
INTO OUTFILE '/home/Div1All.csv'
FIELDS TERMINATED BY ',';

运行它,然后为了测试它,我选择了最常用的颜色之一并编写了这个查询 -

SELECT m.divName, 
n.colorName,
n.colorID,
n.gallons
FROM mfccnStore m, netTran2014 n
WHERE (n.colorID = "6385") AND (m.division = 1) AND (m.store = n.store)
INTO OUTFILE '/home/DoverWhite.csv'
FIELDS TERMINATED BY ',';

然后在运行每个查询后验证颜色 ID“6385”的总数是否匹配,他们确实做到了。太棒了。

但现在它变得有点复杂,需要第三个表,因为他们想要相同的报告,但由“内部”和“外部”油漆分开。

SELECT m.divName, 
n.colorName,
n.colorID,
SUM(n.gallons) as totalGallons
FROM mfccnStore m, netTran2014 n, netProduct p
WHERE ((p.intExt = "INTERIOR") AND (m.division = 1) AND (m.store = n.store))
AND ((n.rex = p.prodNbr) AND (n.sizeCode = p.szCd))
GROUP BY colorID
ORDER BY totalGallons DESC
INTO OUTFILE '/home/Div1Int.csv'
FIELDS TERMINATED BY ',';

这给出的总数比其他两个查询的两倍多一点,我确信这一定与我的 WHERE 子句的顺序以及括号的放置位置有关。任何想法/帮助将不胜感激。

最佳答案

首先,我建议使用 JOIN 语法。然后它是这样的:

SELECT m.divName,
n.colorName,
n.colorID,
p.intExt
SUM(n.gallons) totalGallons
FROM mfccnStore m
JOIN netTran2014 n ON m.store = n.store
JOIN netProduct p ON n.rex = p.prodNbr AND n.sizeCode = p.szCd
WHERE p.intExt IN ('INTERIOR','EXTERIOR')
AND m.division = 1
GROUP BY n.colorID, p.intExt
ORDER BY totalGallons DESC

请小心将哪些字段放入GROUP BY - 大多数 RDBMS 要求包含聚合函数中未包含的所有字段。 MySQL 更灵活一些,但可能返回不准确的结果。

关于mysql - AND 语句分组 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23793196/

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