mysql表

时间:2017-05-29 10:10:17

标签: mysql

我有一个包含一系列行业和名称的人员表。我可以使用以下查询

获取基于行业的值
SELECT *
FROM `people`
ORDER BY `industry` ASC, `name` ASC

在我的表格中有相同行业的记录(人)。是否有可能将它们置于相同的输出下? 现在查询返回此

industry1 
------ 
name1

industry1 
------ 
name2   

industry2 
------ 
name 
----------------------------------------------------

我怎么能以这种方式拥有它?

industry1 
------  
name1
name2  

industry2 
------ 
name  



  var num = 0;
  for(var i = 0;i < r.length; i++) {
  var country = r[i].country;  
    if(i < r.length-1) nextCountry = r[i+1].country;
    
    
    
    if(lastCountry != country && nextCountry == country) {
      num = 0;
    }
  %>
  
    <div class="<%= lastCountry %> <%= country %> <%= nextCountry %>"></div>
      <div class="contact-list">
        <div class="contact-info contact-padding">
          <% if(r[i].industry) { %> <h2 class="h-style"><%= r[i].industry %></h2> <% }%> 
          <span class="name"><%= r[i].name %> <% if(r[i].segment) { %>&#40;<%= r[i].segment %>&#41;<% }%></span>
          <span class="phone"><%= r[i].phone %></span>
          <span class="email"><%@ "generic_email" %></span>
        </div>
      </div>
   
    <% 
  	num++;
    var lastCountry = country;
   }

  %>
&#13;
&#13;
&#13;

这是我构建和使用数据的视图,它只是为每条记录重复相同的代码片段。如果我尝试使用GROUP BY,它只返回

ONE OF THE INDUSTRIES

name1, name2,name3,name4, ...
phone number
email

2 个答案:

答案 0 :(得分:0)

如果我清楚地理解你的要求,你需要像

这样的东西
SELECT `industry`,GROUP_CONCAT(`name`) as name
FROM `people`
GROUP BY `industry`
ORDER BY `industry` ASC

这将为1每行industry行和name comma连接。如果您想要不同的separator管道或空格,请使用GROUP_CONCAT(name SEPARATOR <custom separator>)

答案 1 :(得分:0)

只需对这两列使用GROUP BY。

SELECT * 来自人民 GROUP BY行业,名称 ORDER BY industry ASC,name ASC