我在 MySQL 查询中有一个相当简单的一对多类型连接。在这种情况下,我想通过左表限制我的结果。
例如,假设我有一个 accounts
表和一个 comments
表,我想从 accounts
中提取 100 行以及所有相关的 comments
行。
我能想到的唯一方法是在 FROM 子句中使用子选择,而不是简单地选择 FROM accounts
。这是我目前的想法:
SELECT a.*, c.* FROM
(SELECT * FROM accounts LIMIT 100) a
LEFT JOIN `comments` c on c.account_id = a.id
ORDER BY a.id
但是,每当我需要进行某种子选择时,我的中级 SQL 知识感觉就像做错了什么。
是否有更有效或更快速的方法来执行此操作,或者这很好吗?
顺便...
这可能是最简单的方法,我可以接受它作为答案。我只是想弄清楚是否有另一种方法可以在速度方面与上述陈述竞争。
最佳答案
我觉得很完美。
只是想知道您是否可以从上述查询中接收少于或多于 100 行。
因为如果对于 accounts
表的特定行,comments
表中没有行,那么您将得到不到 100 行。同样,如果 comments
表中有多个与 accounts
表中的行匹配的行,那么您可能会得到超过 100 行。
参见:How can I optimize this query, takes more than a min to execute
关于mysql - 在 JOIN 中限制结果的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10064655/