2013-06-26 46 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命令轻松完成。 –