我想进行查询。
我真正想做的是〜
我有两个表名为model
,另一个名为model_image
。
如果有数据,我想从no
和name
选择mobile
,model
,img_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
答案 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。