2016-01-06 73 views
0

我有這樣轉換列成行只用select語句和where子句


名稱表Preference_1Preference_2Preference_3

約翰印度英國美國

輸出應該是這樣的


名稱Preference_No位置

約1印度

約翰2 UK

約翰3 US

+0

你試過了什麼? – smnbbrv

+1

[MySQL數據透視表]可能的重複(http://stackoverflow.com/questions/7674786/mysql-pivot-table) –

+0

我沒有嘗試任何東西。 – Satish

回答

1

您可以使用unionunion all這樣做:

select Name, '1' AS Preference_No, Preference_1 AS Location from your_table union 
select Name, '2' AS Preference_No, Preference_2 AS Location from your_table union 
select Name, '3' AS Preference_No, Preference_3 AS Location from your_table union 
order by Name 

注意:您可以使用union all沒有union讓所有記錄重複,否則的話,但你的情況你不需要使用union all,因爲你選擇靜態不同的值作爲Preference_No,所以沒有記錄會重複。

+0

沒關係。但我需要它只使用SELECT語句和WHERE子句,而不使用UNION/UNION ALL。 – Satish

+0

爲什麼?上面的代碼中有什麼問題? –

+0

我很好的代碼,但我的要求是這樣的。請你給我提供我的要求的解決方案。 – Satish