为什么Lucee不考虑QoQ中的列别名

Sat*_*Che 1 coldfusion coldfusion-10 qoq lucee

我在本地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#" />
Run Code Online (Sandbox Code Playgroud)

CF服务器在上面的代码上抛出此错误,因为它考虑了别名:

选定的列引用U.UserID与FROM表列表中的任何表都不匹配.

但是,Lucee服务器不考虑别名,run运行上面没有错误.有谁知道为什么Lucee服务器不考虑QoQ列别名?请分享您对此的想法或建议.

Ale*_*lex 7

getusers查询结果中的列:

UserContactName | UserID

QoQ getusers不再存储任何与表相关的信息.如果您引用U(如U.UserID),ACF期望QoQ中的(新)引用能够解析U甚至意味着什么.

另一方面,Lucee存储这些信息并可以使用别名来解决它.您可以检查源代码如何解析QoQ语句.

无论Lucee的功能如何,我建议在QoQ语句中删除以前的别名.当您的查询转储甚至没有提示您存储的别名时,请考虑调试QoQ语句.