mysql连接查询。但是,有些数据没有加入数据

时间:2016-11-08 22:08:52

标签: mysql join

我想进行查询。

我真正想做的是〜

我有两个表名为model,另一个名为model_image

如果有数据,我想从noname选择mobilemodelimg_name

model_image

所以,我做了这个查询,但我不知道如何获得在model_image表中没有任何数据的数据。

任何人都可以帮助我?

谢谢〜

以下查询工作谢谢〜

select m.no, m.name, m.display_name, m.mobile, i.img_name 
from model as m
left join model_image as i on m.no = i.model_no 
order by i.sort desc 
limit 1

enter image description here

2 个答案:

答案 0 :(得分:1)

您使用的是left join,这是正确的,并会为model的结果提供model_image

中没有相应行的结果

但是,您要按第二个表中的列对其进行排序。在左连接中,仅显示在第一个表中的每一行都将在第二个表的所有列上获得null
因此,没有图像的所有行都将为null作为排序列。因此,由于您将结果限制为1,因此您将无法获得结果集底部的空值

答案 1 :(得分:1)

如果要获得每个模型的最高排序图像,则需要在子查询中执行此操作,并将其与model表连接。

select m.no, m.name, m.display_name, m.mobile, IFNULL(i.img_name, '') AS img_name
from model as m
left join (
    SELECT a.model_no, a.img_name
    FROM model_image AS a
    JOIN (SELECT model_no, MAX(sort) AS maxsort
          FROM model_image
          GROUP BY model_no) AS b
    ON a.model_no = b.model_no AND a.sort = b.maxsort) AS i
on m.no = i.model_no 

有关子查询的说明,请参阅SQL Select only rows with Max Value on a Column