我举了个例子:http://sqlfiddle.com/#!9/3 BBB6天/1/0
SELECT
`Image`.`id`,
`Topic`.`title`
FROM
`images` AS `Image`, `topics` AS `Topic`
WHERE
`Image`.`vender_id` = 'model' AND `Topic`.`id` = IFNULL((SELECT article_id FROM articles_images WHERE image_id = `Image`.`id` ORDER BY id DESC LIMIT 0, 1), 999)
ORDER BY
`Image`.`id` DESC
LIMIT 10
结果:(正确)
id title
8
7
5 CCC
4 DDD
3 BBB
2 BBB
1
没有 IFNULL(..., 999)
http://sqlfiddle.com/#!9/3 bbb6天/2
结果:
id title
5 CCC
4 DDD
3 BBB
2 BBB
但是我也需要有空“title”=>id:8,7和1的记录
有没有一种不使用ifnull就拥有所有记录的方法?
+更新+
@已由\u使用
谢谢你的帮助。我得到结果:(它有两个id为5的记录)
id title
8 (null)
7 (null)
5 AAA << X
5 CCC << correct
4 DDD
3 BBB
2 BBB
1 (null)
有两个id相同的记录:5,如何仅获取其中一个id最高的记录?
我需要得到的结果是:
id title
8
7
5 CCC
4 DDD
3 BBB
2 BBB
1
2条答案
按热度按时间sbtkgmzw1#
使用左连接:
结果与您要求的结果略有不同:
对于重新修改的问题(包括空值):
请参见:https://rextester.com/lcobw94449
为了保证您使用的是最高的文章\u,如果我建议:
piztneat2#
使用左连接