我不明白为什么这个查询没有按预期工作。我有一个马桌和文件桌。文件表有列“fk_object”和“fk_id”,所以我可以获得像 fk_object="horse_photo" 和 fk_id=725 这样的记录。文件表也有 is_default 和 position 列,所以我可以抓取应该是其个人资料图片的文件(照片)。但是,我没有得到默认照片甚至第一个位置文件。有人可以向我解释为什么此查询无法按预期工作以及正确的解决方案是什么?谢谢!
SELECT `horse`.`id`,
`horse`.`name`,
`file`.`id` AS `fid`,
`file`.`is_default`,
`file`.`position`
FROM `horse`
LEFT OUTER JOIN `file` ON (`file`.`fk_id`=`horse`.`id`
AND `file`.`fk_object`="horse_photo")
GROUP BY `horse`.`id`
ORDER BY `horse`.`id` ASC,
`file`.`is_default` DESC,
`file`.`position` ASC;
为了清楚起见,我想检索所有马匹及其默认照片(如果有的话)。
更多细节: File.is_default 是一个布尔值,0 或 1。File.position 是从 0 开始的 UNSIGNED INT。加入的文件应该首先是 is_default=1,然后解析为 File.position=0(或最小的 int) .
我得到的结果:按 horse.id ASC 排序的列表,但是加入的文件似乎只是第一个文件(按主 id 列排序)。