2013-04-13 41 views
1

我已經寫了一個SP來檢索結果集。所以下面的SQL節都會給我設置爲我想要的結果:動態添加一行到SQL結果集

SELECT * 
FROM `temp_table` JOIN `mytable` ON `mytable_ID` = `temp_table_tmp_id` 
WHERE CEILING(`tmp_idx`/int_page_size) = p_page_no 

現在,我需要一個動態的行添加到上面的結果集,因此,我曾嘗試以下:

SELECT * 
FROM `temp_table` JOIN `mytable` ON `mytable_ID` = `temp_table_tmp_id` 
WHERE CEILING(`tmp_idx`/int_page_size) = p_page_no 
UNION ALL 
SELECT DISTINCT `ID`, `temp_table_tmp_id`,`Name`, 100, `Type`,`Description` 
ORDER BY `tmp_idx`; 

但是,在「UNION ALL」之後的SELECT語句中定義的每個字段都會給出「字段列表」中的「未知列'tmp_idx'錯誤。我已經把「100」作爲結果集中應該註明的值。我希望這已經足夠清楚我想達到的目標。請讓我知道如何改正/達到?

在此先感謝。

+0

對不起,我使用MySQL來實現這一目標。 –

+0

嘗試使用撇號(即')而不是反碼(')來分隔動態行中的列標題。此外,您必須將所有數字列轉換爲基本查詢中的格式化字符串。 –

+0

什麼是tmp_ind?這是第一個工會選擇的領域? – AnatolyS

回答

0

嘗試使用撇號(即「),而不是背蜱(`)來分隔欄標題的動態排。此外,您必須將所有數字列轉換爲基本查詢中的格式化字符串。

爲了控制排序,以便強制最後出現人爲行,爲數據行添加另一列sequence,硬編碼值爲0,動態行的值爲1。然後在ORDER BY的前面添加這個新的列sequence。 (在一些SQL方言,有必要要麼按序號而不是按名稱來識別此列,或添加包含order by子句的包裝查詢。)

+0

我通過獲得總計結果+1作爲下一個數字來解決:)非常感謝幫助@PieterGeerkens –

+0

也可以。當然,最好的感謝總是投票。 ;-) –

+0

我需要有15個代表投票它似乎。抱歉! –