You might try adding a column to your query based on the order the camp ids appear in the list. To items to consider: 1. This code is not tested. 2. You should validate that your session.camp_list variable contains only integers, else you are vulnerable to a SQL injection attack. 3. This code assume that your list does not contain any duplicate values. <CFQUERY name="GetCamp" DATASOURCE="#datasource#"> SELECT camp_uid,camp_title,camp_text,camp_image_type, CASE <!--- loop over list and create an order value for each camp, this assumes that list does not contain any duplicates ---> <cfloop from="1" to="#ListLen(session.camp_list)#" index="listIdx"> WHEN camp_uid = #ListGetAt(session.camp_list ,listIdx)# THEN #listIdx# </cfloop> END AS camp_order FROM campaigns WHERE camp_uid IN ( <cfqueryparam value="#session.camp_list#" cfsqltype="CF_SQL_INTEGER" list="true"> ) ORDER BY camp_order; </CFQUERY> Assume that your session.camp_list variable contains "23,17,5" the query qenerated should look like: SELECT camp_uid,camp_title,camp_text,camp_image_type, CASE WHEN camp_uid = 23 THEN 1 WHEN camp_uid = 17 THEN 2 WHEN camp_uid = 5 THEN 3 END AS camp_order FROM campaigns WHERE camp_uid IN ( 23,17,5 ) ORDER BY camp_order; Message was edited by: JR \"Bob\" Dobbs.
... View more