【发布时间】:2015-10-22 14:28:43
【问题描述】:
我有一个带有树表的数据库,
person: id, bio, name
book: id, id_person, title, info
file: id, id_book, location
其他信息:书约约 50,000 行,文件约约 300,000 行。
我想做的是select 12 个不同的作者和select 只有一个book 并从book 中选择location 从表file。
我尝试的是以下内容:
SELECT DISTINCT(`person`.`id`), `person`.`name`, `book`.`id`, `book`.`title`, `book`.`info`, `file`.`location`
FROM `person`
INNER JOIN `book`
ON `book`.`id_person` = `person`.`id`
INNER JOIN `file`
ON `file`.`id_book` = `book`.`id`
LIMIT 12
我了解到 DISTINCT 的工作方式与预期不同。还是我错过了什么?上面的代码返回同一作者的书籍并与下一本一起使用。这不是我想要的。我想要 12 位不同作者中的每一位的 1 本书。
从数据库中检索此信息的正确方法是什么?另外,我想检索 12 个 随机 人。不是在数据库中按连续顺序存储的人。我无法用rand() 制定任何query,因为我什至无法找到不同的作者。
我使用 MariaDB。如果能提供任何帮助,我将不胜感激,尤其是帮助我以出色的性能做到这一点。
【问题讨论】:
-
stackoverflow.com/questions/4329396/… - 同样的逻辑应该适用于您的 MariaDB,但查询语言差异除外。
标签: mysql performance mariadb