2012-11-26 97 views
0

我需要選擇倒序表結構中的記錄。 例如, 如果我的表struture是這樣按列倒序順序選擇值

class name  rank 
------ ---------- ------ 
A  Nija    2 
D  cruz    3 
B  Antony   4 
C  silverster  5 
A  febin   1 

意味着我想要的結果作爲

rank name  class 
------ ---------- ------ 
    2 Nija  A  
    3 cruz  D  
    4 Antony  B  
    5 silverster C  
    1 febin  A  

你可以說,選擇像軍銜,姓名,班級列。但我的表列將動態增加。如果我的表包含任意數量的列,但結果應該與表結構相反,則需要結果。這裏我只選擇所有列。

+3

*我的表列將在動態增加*爲什麼要添加動態列在表格中?這聽起來像是一個設計缺陷。您不應該需要將新列動態添加到表中。你能詳細說明你目前的設計嗎? – Taryn

回答

1

試試這個:

SET @myval=(select group_concat(COLUMN_NAME)from (
SELECT ORDINAL_POSITION, COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_name = 'Table1' 
order by ORDINAL_POSITION desc) a); 

SET @strsql=CONCAT('select ',@myval,' from Table1'); 

PREPARE stmt FROM @strsql; 
EXECUTE stmt; 

SQL FIDDLE DEMO

+0

如果我使用它,它會在其他數據庫中得到相同的表列,我怎樣才能限制它呢? –

+0

我沒有得到您的問題 – AnandPhadke

+0

我有兩個不同的數據庫名稱爲DTRESS&DTREEHASH相同的表格示例。 Ur Query返回列名稱DTREES.sample和DTREEHASH.sample。我只想要DTREE.sample列。我怎樣才能達到目的? –

0

你爲什麼不這樣做只是

SELECT rank, name, class FROM table_name; 
+1

我不知道列名..它可能會動態追加 –

+0

哦,這是現在的轉折點。 –