<CFIF ListLen(SESSION.WHSurveyStruct.reasonString, ";") gt 0>
<CFQUERY name="insertReasons" datasource="#REQUEST.dsn#">
INSERT INTO TWelcomeHome_Reason
(ReasonID, SubReasonID, SurveyID)
SELECT #sanitize(ListFirst(SESSION.WHSurveyStruct.reasonString, ";"))#, #sanitize(getLatestSurveyID.SurveyID)#
<CFLOOP list="#sanitize(ListRest(SESSION.WHSurveyStruct.reasonString, ';'))#" index="thisReason" delimiters=";">
UNION ALL
SELECT #sanitize(thisReason)#, #sanitize(getLatestSurveyID.SurveyID)#
</CFLOOP>
</CFQUERY>
我试图理解这是干什么的。我对循环感到困惑,为什么select语句没有FROM
?好吧,他们只是标量。为什么这个SELECT语句没有FROM?
怎么样在循环的外部和内部有一条select语句?我有点不明白union all
。以及如何指定3列(ReasonID,SubReasonID,SurveyID),但每个值都给出了?
倾倒:
结构
CACHED:假EXECUTIONTIME:0总记录:8 SQL:INSERT INTO TWelcomeHome_Reason(ReasonID,SubReasonID,SurveyID)SELECT 6, 18,245 UNION ALL
SELECT 6,21,245
UNION ALL
SELECT 6,24,245
UNION A LL
SELECT 3,5,245
UNION ALL
SELECT 3,6,245
UNION ALL
SELECT 3,8,245
UNION ALL
SELECT 3,11,245
UNION ALL
SELECT 3,7,245
'UNION ALL'模拟结果集。这是一种将多个记录合并在一起并一次性插入的方法。至于在'INSERT'列表中的列数与结果集中的列数有什么不同,那应该不行*。我会检查调试输出以验证它甚至可以执行。如果确实如此,我会感到惊讶,因为不匹配会导致语法错误。 – Leigh 2012-07-17 19:54:29
@Leight足够舒适,它的工作。必须是某种黑客。 – Celeritas 2012-07-17 19:58:10
嗯..该代码生成的实际sql是什么?将'result'属性添加到查询和'cfdump'中。 – Leigh 2012-07-17 19:59:24