显示数据库表中的数据并单独隐藏空值

时间:2014-11-05 10:39:18

标签: mysql

我创建了一个名为subjects的表,其中包含id列作为主键和10个主题列(subject1,subject2,....subject10)。

现在,对于特定的id,可能会有5个,8个或10个subjects。对于剩余的5 id,剩余5 subjects的{​​{1}}被遗漏为null,而{8} subject的ID为subjects

请帮我查询从数据库中检索的内容,这样如果选择了一行包含5个主题的ID,则在检索过程中应该隐藏其余5个null值。

1 个答案:

答案 0 :(得分:0)

您应该重新考虑数据库结构并创建3个表。让我们假设您想要一个链接到一个或多个主题的用户。您可以像这样建模数据库:

用户

  • 用户ID
  • ...

<强> UserToSubject

  • 用户ID
  • SubjectId

<强>主题

  • SubjectId
  • ...

User表将包含有关用户的任何信息,Subject表将包含有关每个主题的信息,UserToSubject表用于将多个用户链接到多个主题(多对多关系)。

然后,您可以使用JOIN

继续获取值
SELECT
  u.UserId
  s.SubjectID
FROM
  User u
  JOIN UserToSubject uts ON u.UserId = uts.UserId
  JOIN Subject s ON s.SubjectId = uts.SubjectId
GROUP BY
  u.UserId

当然,您的用户表可以是任何内容,只要它能识别某些内容。