<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