使用MySQL 5.6。我有一个视图,该视图从一个名为listquotes
的主表中获取,而从其他表中获取其他一些项目。表中也在视图中的导入列为Quote #
和Revision
。我们可能对相同的引用号进行5个不同的修订,因此我们的表格看起来像
id .... Quote# Revision
================================
1 1234 1
2 1234 2
3 1234 3
4 1234 4
5 1234 5
现在,在我的应用程序GUI上,我们有一个下拉列表,应允许您仅查看每个引用的最新修订。这是我尝试执行的操作]
SELECT
...columns...
FROM view_allQuoteInfo
LEFT JOIN listcustomers c ON c.id = view_allQuoteInfo.customerId
WHERE 1=1 AND view_allquoteinfo.customerId = 2453 AND view_allquoteinfo.quoteStatusId = 2 AND view_allquoteinfo.Revision = (SELECT max(t.Revision) FROM view_allquoteinfo t WHERE view_allquoteinfo.`Quote #` = t.`Quote #`)
ORDER BY idx DESC
但是,这没有给我想要的结果。这是针对我在excel中做过的特定客户的分析,有些报价只有一个修订版没有显示,例如6668,而其他报价,例如带有两个修订版的4730,则正常工作]
Excel中所有表的where子句是
1=1
AND view_allquoteinfo.customerId = 2453
AND view_allquoteinfo.quoteStatusId = 2
并且“最新表”的子句是>
1=1 AND view_allquoteinfo.customerId = 2453 AND view_allquoteinfo.quoteStatusId = 2 AND view_allquoteinfo.Revision = (SELECT max(t.Revision) FROM view_allquoteinfo t WHERE view_allquoteinfo.`Quote #` = t.`Quote #`)
唯一的区别是我试图获得最新版本。该逻辑对我来说似乎是正确的,但显然MySQL并未按照我认为的方式对其进行解释。
关于它为什么不起作用或我将如何解决的任何线索?
我希望在我的“最新”表中看到报价6668修订版1和报价5963修订版4,而报价5963修订版1,2,3将不存在。
使用MySQL 5.6。我有一个视图,该视图从一个名为listquotes的主表中获取,而从其他表中获取其他一些项。表中也在视图中的导入列是Quote#和...
子条件内的条件view_allquoteinfo。Quote #
= t。Quote #
不明确(t和view_allquoteinfo是同一表)