如果UserID匹配,则在单个列中显示多个值?

时间:2016-02-16 16:55:20

标签: php mysql

如果UserID == UserID,是否可以在同一列(在html表中)中显示由逗号(,)分隔的多个值(来自数据库中的不同行)? 例如:

数据库:

UserID | Skills

   1      java
   1      python
   2      SQL
   1      HTML

HTML表:

UserID | Skills

   1      java, python, HTML
   2      SQL

更新:因为使用GROUP_CONCAT

$user_project_sql = "SELECT user.UserID, user.Fname, user.Lname, user.JobRole, GROUP_CONCAT(skills.Description SEPARATOR ', ') as skills
      FROM user
      INNER JOIN userprojects ON user.UserID = userprojects.UserID
      INNER JOIN projects ON userprojects.ProjectID = projects.ProjectID
      INNER JOIN userskills ON user.UserID = userskills.UserID
      INNER JOIN skills ON userskills.SkillID = skills.SkillID
      INNER JOIN usertasks ON user.UserID = usertasks.UserID
      INNER JOIN tasks ON usertasks.TaskID = tasks.TaskID
      WHERE tasks.TaskID = '$Task'
      GROUP BY UserID"
      or die(mysqli_error($con));

我获得了两次打印的所有技能:

UserID | Skills

       1      java, python, HTML, java, python, HTML
       2      SQL

3 个答案:

答案 0 :(得分:1)

尝试此查询:

select UserID,GROUP_CONCAT(Skills) as skills from table where UserID='YOU_USER_ID' group by UserID;

答案 1 :(得分:1)

听起来您想要查看GROUP_CONCAThttp://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat

我认为你可以用

达到预期的效果
SELECT UserID, GROUP_CONCAT(`Skills` SEPARATOR ", ") as `skills` 
  FROM `skillsTable` 
  WHERE `UserID` = ? 
  GROUP BY `UserID` 

如果仅选择单个用户ID,则GROUP BY是可选的且不必要。例如,如果您执行WHERE UserID IN (. . . )

,则非常有用

答案 2 :(得分:1)

GROUP_CONCAT(表达式)

此函数返回字符串结果,其中包含来自组的连接非NULL值。如果没有非NULL值,则返回NULL。完整语法如下:

<强> SQL:

SELECT  UserID, GROUP_CONCAT(DISTINCT Skills ORDER BY Skills ASC SEPARATOR ', ') as Skills FROM table

这是一个根据技能字母对Skills进行排序的查询。