今天有一个完整的SQL精神失效,无法解决这个问题。 ColdFusion和MS Access
我想在ColdFusion中进行查询查询。
原始查询:
<cfquery name="myQuery" datasource="xxx">
SELECT Name, ID, tblLoc.Directions, tblLoc.LocationOrder
FROM myTable
WHERE .....
ORDER BY tblLoc.LocationOrder
</cfquery>
我想从此查询中创建另一个查询,我在其中检索LocationOrder最大的方向
因此,如果myQuery返回:
Name ID Directions LocationOrder
AA 10 AAAAAA 1
BB 11 BBBBBB 2
My QoQ would return:
Directions
BBBBBB
但是我试过的看似简单的SQL的每次迭代都失败了。我必须半睡半醒。
<cfquery name="latestDirections" dbtype="query">
SELECT Directions
FROM myQuery
WHERE LocationOrder=(select max(LocationOrder) from myQuery)
</cfquery>
<cfquery name="latestDirections" dbtype="query">
SELECT Directions, MAX(LocationOrder) as maxLocationOrder
FROM get_sel_locations
</cfquery>
不......也不会这样做。
答案 0 :(得分:1)
......第二个,“专栏 get_sel_locations.Directions是 SELECT list子句中无效 因为它不包含在 聚合函数并没有 GROUP BY子句“
错误很清楚。您缺少GROUP BY子句。使用MAX()等聚合时,您必须通过任何非聚合列GROUP得到结果。在这种情况下:路线
SELECT Directions, MAX(LocationOrder) as maxLocationOrder
FROM get_sel_locations
GROUP BY Directions
更新但是如果只想要所有内容的最大值,那么Yisroel的查询可能就是您想要的。
更新如评论中所述,QoQ 不数据库查询。它们仅支持文档http://livedocs.adobe.com/coldfusion/8/using_recordsets_3.html
中列出的函数/语法答案 1 :(得分:0)
SELECT Name, ID, tblLoc.Directions, tblLoc.LocationOrder
FROM myTable
WHERE .....
ORDER BY tblLoc.LocationOrder DESC LIMIT 1;
应该做你。您在最大LocationOrder的路线将通过排序和限制来处理。
答案 2 :(得分:0)
另一种可能性,如果我正确理解了这个问题:
SELECT x FROM table_name WHERE y =(SELECT MAX(y)FROM table_name)
答案 3 :(得分:0)
如果从myQuery中删除ORDER BY子句会发生什么?另外,请说出查询失败的原因。你得到了什么结果?
答案 4 :(得分:0)
鉴于您遇到的错误,您可以尝试这样做:
-- remove the parentheses
WHERE LocationOrder=select max(LocationOrder) from myQuery
或
-- use IN instead of equals even though your subquery returns a single scalar value and '=' should be fine.
WHERE LocationOrder IN (select max(LocationOrder) from myQuery)
答案 5 :(得分:0)
您可以先做一个QoQ来获取最大位置
<cfquery name="maxDirections" dbtype="query">
SELECT max(LocationOrder) as maxLocation
FROM myQuery
</cfquery>
<cfquery name="latestDirections" dbtype="query">
SELECT Directions
FROM myQuery
WHERE LocationOrder = '#maxDirections.maxLocation#'
</cfquery>