具有空值的SQL查询

时间:2013-12-08 04:02:25

标签: mysql database

近一天我一直坚持这一点。我对数据库知之甚少,因为我是新手。

我有一张这样的表

问题表

question_strand | question_number | question_difficulty
     part 1     |        1        |        easy
       ..       |       ...       |         ...
     part 1     |        20       |        medium
       ..       |       ...       |         ...
     part 10    |        20       |        difficult

复合键: question_strand question_number

问题表由10个部分组成,每个部分有20个项目,每个数字都有困难。此表还包含question_items和其他列,我没有在示例中包含这些列,因为它与问题无关

问题答案表

question_strand | question_number | question_answer | student_name
     part 1     |         1       |       true      |    gerald
      ...       |        ...      |        ...      |      ...
     part 1     |        20       |       wrong     |    gerald

复合键 question_strand student_name question_number

问题答案表也包含question_strand和question_number,但有question_answer和student_name

我只想选择特定学生的答案。

这是我想要的结果

question_strand | question_number | question_answer | student_name
     part 1     |         1       |       true      |    gerald
      ...       |        ...      |        ...      |      ...
     part 1     |        20       |       wrong     |    gerald
     part 2     |         1       |       null      |     null
      ...       |        ...      |        ...      |     ...
     part 10    |        20       |       null      |     null

我想获得所有问题,但如果它没有任何值与第二个表相对应,也包含空值

我正在使用mySQL。提前致谢

2 个答案:

答案 0 :(得分:0)

您只需使用左连接

即可
SELECT
  q.question_strand,
  q.question_number,
  a.question_answer,
  q.student_name
FROM
    questions_table q LEFT JOIN answer_table a
      ON q.question_strand = a.question_strand AND
         q.question_number = a.question_number  

如果您想要特定学生的记录

SELECT
  q.question_strand,
  q.question_number,
  a.question_answer,
  q.student_name
FROM
    questions_table q LEFT JOIN answer_table a
      ON q.question_strand = a.question_strand AND
         q.question_number = a.question_number AND
         q.student_name    = 'gerald'

答案 1 :(得分:0)

您尚未指定实际查询,因此我很难为您提供帮助。

SELECT question_strand, question_number, question_answer, student_name
FROM question_answers
WHERE student_name = "gerald" OR student_name IS NULL

此查询将从question_answers中提取学生称为Gerald的所有数据,或者他们没有姓名。 这应该从我理解的内容中提取您想要的数据。