0
我有一個表,如下所示。在mysql中選擇行到列
**id | location**
1 | East Flow
2 | East Level
3 | East Pressure
我想用Mysql中的select語句按如下方式轉換上面的表。
1 | 2 | 3
East Flow | East Level | East Pressure
我正在使用MySql 5.5 請幫忙。
我有一個表,如下所示。在mysql中選擇行到列
**id | location**
1 | East Flow
2 | East Level
3 | East Pressure
我想用Mysql中的select語句按如下方式轉換上面的表。
1 | 2 | 3
East Flow | East Level | East Pressure
我正在使用MySql 5.5 請幫忙。
如果Id列的計數是固定的或已知的,則使用CASE
表達式。
查詢
select max(case when id = 1 then location end) as `1`,
max(case when id = 2 then location end) as `2`,
max(case when id = 3 then location end) as `3`
from your_table;
如果id
列的數量是未知的,那麼你可能需要使用動態SQL。
查詢
select
group_concat(distinct
concat(
'max(case when id = ',
id,' then location end) as `', id,'`'
)
) into @sql
from your_table;
set @sql = concat('select ', @sql, ' from your_table');
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
您好感謝您的答覆。在我的情況下,ID列的數量是未知的,不是固定的。任何想法? – prabu
嗨,此解決方案正在工作。謝謝你。但是面對另外一個問題,當我在MySql工作臺中運行動態SQL時,它可以很好地工作,但是當我使用eclipse Datasource explorer運行時,我遇到了語法錯誤。任何想法? – prabu