【发布时间】:2020-09-26 08:32:30
【问题描述】:
我有以下查询来获取随机作者的书籍并按书籍最后修改日期排序。 因为我是 SQL 新手,所以有些东西告诉我这个查询可以改进和简化。我将感谢 SQL 专家的帮助,如果这已经简化,那么我将认为自己是 SQL 专家:)。
SELECT b.id, bc.author FROM book_authors bc
INNER JOIN books b ON bc.book = b.id
WHERE bc.author = (SELECT author FROM book_authors ORDER BY random() limit 1) AND b.status = 'GOOD'
GROUP BY b.id, bc.author
ORDER BY MAX(b.modified_date) DESC
LIMIT 10 OFFSET 0 -- for pagination purposes
表结构
book_authors
book author
1 1
2 3
3 1
books
id status modified_date
1 GOOD 01-01-2010
2 GOOD 02-01-2010
3 GOOD 03-01-2010
authors
id
1
2
3
寻找类似的输出
authorId bookId
1 (a random author) 3
1 (same random author) 1
【问题讨论】:
-
你的预期输出是什么?
-
更新了问题,这样可以吗?
-
您只想要拥有“GOOD”书籍的作者吗?你关心性能吗?
-
@GordonLinoff 是的,是的,我愿意
标签: sql postgresql join