我正在比较本地CF & Lucee服务器中的以下查询。ColdFusion服务器引发QoQ运行时错误。但是,当我在Lucee中执行相同的查询时,它会返回所需的查询结果。
<cfquery name="getusers" datasource="myDSN">
SELECT
UC.UserContactName, U.UserID
FROM Users U
INNER JOIN UserContacts UC ON U.UserID = UC.UserID
WHERE U.UserID in (99,52,41,76,15)
</cfquery>
<cfquery name="getContactName" dbtype="query">
SELECT UserContactName FROM getusers
WHERE U.UserID = <cfqueryparam value="76" cfsqltype="cf_sql_integer">
</cfquery>
<cfdump var="#getContactName#" />CF服务器在上面的代码上抛出此错误,因为它考虑别名:
所选列引用U.UserID与FROM表列表中的任何表不匹配。
然而,Lucee服务器没有考虑别名,运行运行上面的没有错误。有人知道为什么Lucee服务器不考虑QoQ列别名吗?请分享你对此的想法或建议。
发布于 2016-11-04 11:13:43
getusers查询将在列中得到以下结果:
UserContactName | UserID
QoQ on getusers不再存储任何与表相关的信息。如果引用U (如在U.UserID中),则ACF希望QoQ中的(新)引用能够解决U甚至意味着什么。
另一方面,Lucee存储这些信息,并可以使用别名解析它。您可以检查源代码如何解析QoQ语句。
不管Lucee的功能如何,我建议删除QoQ语句中的前别名。当您的查询转储甚至没有提示您存储别名时,请考虑调试QoQ语句。
https://stackoverflow.com/questions/40418298
复制相似问题