mysql右键连接2个表并在表1中选择all

n7taea2i  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(398)

我在数据库中使用两个表,并查询如下所示的表:
student ```
id | studentid | name | room

  1. 1 | 28778 | a | 1
  2. 2 | 28779 | b | 2
  3. 3 | 28785 | c | 2
  4. 4 | 28300 | d | 2
  5. 5 | 28301 | e | 2
  6. 6 | 28302 | f | 2
  7. 7 | 28303 | g | 2
  8. 8 | 28304 | h | 3
  9. 9 | 28305 | i | 3
  10. 10 | 28306 | j | 3
  1. `image` ```
  2. id |student_id| image_filename | type |
  3. ---------------------------------------------------
  4. 1 | 1 | qwrioqw.jpg | m6-1 |
  5. 2 | 1 | oerqew.jpg | m6-2 |
  6. 3 | 2 | qwwqeqw.jpg | m6-2 |
  7. 4 | 4 | wqeioqw.jpg | m6-1 |
  8. 5 | 4 | qwwoqeqw.jpg | m6-2 |
  9. 6 | 7 | eqwrioqw.jpg | m6-1 |
  10. 7 | 7 | rewtoqw.jpg | m6-2 |
  11. 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 此命令的结果是:

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

但我想要所有的结果 student.room = 2 以及 image.type = 'm6-2' 如果图像m6-2为“无”,我希望显示空值:

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

如何编写命令?

jq6vz3qz

jq6vz3qz1#

您可以尝试使用下面的-put your others condition on子句而不是where子句

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

gzjq41n42#

当image.type为空时,需要修改以获取image.type:

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

相关问题