作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
五年来我第一次回到 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/
我是一名优秀的程序员,十分优秀!