mysql right join 2 tables and select all in table1

mysql right join 2 tables and select all in table1

我在数据库中使用两个表并查询这些表如下所示:

Table student

     id  |  studentid  |  name  |  room
  ----------------------------------------
      1  |    28778    |   a    |   1
      2  |    28779    |   b    |   2
      3  |    28785    |   c    |   2
      4  |    28300    |   d    |   2
      5  |    28301    |   e    |   2
      6  |    28302    |   f    |   2
      7  |    28303    |   g    |   2
      8  |    28304    |   h    |   3
      9  |    28305    |   i    |   3
     10  |    28306    |   j    |   3

Table image

     id  |student_id|  image_filename  |  type  |
  ---------------------------------------------------
      1  |     1    |    qwrioqw.jpg   |  m6-1  |
      2  |     1    |    oerqew.jpg    |  m6-2  |
      3  |     2    |    qwwqeqw.jpg   |  m6-2  |
      4  |     4    |    wqeioqw.jpg   |  m6-1  |
      5  |     4    |    qwwoqeqw.jpg  |  m6-2  |
      6  |     7    |    eqwrioqw.jpg  |  m6-1  |
      7  |     7    |    rewtoqw.jpg   |  m6-2  |
      8  |     8    |    asdsadas.jpg  |  m6-2  |

我使用了命令SELECT name, id, image.image_filename, image.type FROM image RIGHT JOIN student ON student_id=student.id WHERE room=2 HAVING image.type = 'm6-2' ORDER BY id

此命令的结果是:

     name  |  id  |  image_filename  |  type  |
  ---------------------------------------------------
        b  |  2   |    qwwqeqw.jpg    |  m6-2  |
        d  |  4   |    qwwoqeqw.jpg   |  m6-2  |
        g  |  7   |    rewtoqw.jpg    |  m6-2  |

但是我想要结果全部 student.room = 2 AND image.type = 'm6-2' 如果图像 m6-2 是 none 我想要显示 NULL :

     name  |  id  |  image_filename  |   type
  -----------------------------------------------
        b  |  2   |    qwwqeqw.jpg   |   m6-2
        c  |  3   |        NULL      |   NULL
        d  |  4   |    rewtoqw.jpg   |   m6-2
        e  |  5   |        NULL      |   NULL
        f  |  6   |        NULL      |   NULL
        g  |  7   |    rewtoqw.jpg   |   m6-2

如何编写命令?

当它们为 NULL 时,您需要修改您的 image.type:

SELECT name, id, image.image_filename, image.type 
FROM image RIGHT JOIN student ON student_id=student.id 
WHERE room=2 and (image.type = 'm6-2' or image.type is null) 
ORDER BY id

您可以尝试以下 - 使用将您的其他条件放在 ON 子句上而不是 Where 子句

   SELECT name, id, image.image_filename, image.type 
    FROM image RIGHT JOIN student ON student_id=student.id 
    and room=2 and image.type = 'm6-2'