2013-06-26 48 views
2

顯示的記錄我有一個query.I有兩列國表和state.I想在下面的格式顯示的列MySQL查詢到從表

Country  State    
----------- --------- 
India  Delhi 
      Bangalore 
      Kolkata 
      Mumbai 


USA   California 
      Florida 
      Las Vegas 
      Virginia 

,意思是「印度」纔出現一次的當我從表中選擇國家和州時,國家欄和重複值將作爲​​國家欄中的空白值。

在此先感謝

+0

你可以從前端格式化數據只是做一個簡單的加入與國家 –

+0

爲Java開發它不會產生太多的問題,但我無法執行查詢這個需求在MySQL中。 –

回答

1

介紹一般是,如果不總是更好的SQL之外完成的,所以我建議你在任何表示層運行這樣做,但如果是用於查詢的需求,你可以使用會話變量,它;

SELECT Country, State FROM (
    SELECT IF([email protected], '', Country) Country, State, @country := Country 
    FROM (SELECT Country, State FROM Table1 ORDER BY Country, State) dummy1, 
     (SELECT @country:='') dummy2 
) dummy3; 

An SQLfiddle to test with

只是爲了顯示一個(可能)更好的方法,您可以使用它來獲得每個國家的狀態列表,並在您的表示層進一步處理它;

SELECT Country, GROUP_CONCAT(State) FROM Table1 GROUP BY Country; 

Another SQLfiddle

+0

我知道第二個查詢,但我想這樣做MySql.Actually這個問題在採訪中被問到。 –

+1

感謝Joachim Isaksson.Executing第一個查詢解決了我的問題。 –

+0

選擇國家,州從( )選擇如果(國家= @國家,'',國家)國家,州,@國家:=國家從 (選擇國家,從表1國家,國家,州的狀態)temp1)temp2; 此查詢也輸出相同的結果。 –

-2

使用PL/sql.Moreover你的表是voilating第五範式。

+0

什麼pl/sql? OP使用的是mysql,而不是oracle。 –

+0

我可以在oracle中使用break on country命令輕鬆完成。 –