我正在尝试从以下查询中的子查询中选择 2 列,但无法这样做。尝试创建别名表,但仍然无法获取它们。
SELECT
DISTINCT petid,
userid,
(SELECT MAX(comDate) FROM comments WHERE petid=pet.id) AS lastComDate,
(SELECT userid FROM comments WHERE petid=pet.id ORDER BY id DESC LIMIT 1) AS lastPosterID
FROM
pet LEFT JOIN comments ON pet.id = comments.petid
WHERE
userid='ABC' AND
deviceID!='ABC' AND
comDate>=DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 2 MONTH);
Run Code Online (Sandbox Code Playgroud)
基本上,我试图从同一行获取lastComDate
& lastPosterID
- 特定宠物评论中的最新行。请建议我如何以有效的方式获得它们。
上面的查询有效,但由于同一行被提取两次似乎有点矫枉过正。此外,该ORDER BY
子句比聚合函数慢得多 - 正如我在分析查询时发现的那样。因此,避免排序的解决方案将不胜感激。