2010-02-12 39 views
3

我一直在使用MYSQL几年,现在我经常发现自己在想这个问题,但从来没有到现在才开始研究它。所以在这里。比方说,我有一张作者名单和一张书。每本书都有一个字段可将其链接到作者。如何限制MYSQL中的复合记录?

现在,让我们说,我想要一个作家和他的书,都在一个集合。

SELECT * FROM authors, books WHERE books.author = authors.id 

到目前为止没有问题。现在要处理棘手的部分:我如何得到5位作者和他的书?

如果我这样做:

SELECT * FROM authors, books WHERE books.author = authors.id LIMIT 5 

我就拉闸获得第5册链接到一个单一的作者。

那够清楚了吗?这可能在MYSQL中做,或者我不得不诉诸代码(我不想这样做)?

非常感谢!

回答

4

使用子查询:

SELECT * 
FROM (SELECT * FROM authors LIMIT 5) AS authors, books 
WHERE books.author = authors.id 

了解更多关于这里的子查询中的FROM子句: http://dev.mysql.com/doc/refman/5.0/en/unnamed-views.html

+0

这是唯一的办法?我曾希望有一些更简洁的方法可能会涉及在限制条款上做巫术。这个示例场景非常简单,但是我的实际表格非常复杂,我希望有一些方法不会涉及拆除现有的查询构造。呃,好吧。感谢您的回应! – user272053 2010-02-12 19:10:54