LEFT JOIN 仅第一行
在数据库查询领域,LEFT JOIN 操作是组合多个数据的强大工具。表。然而,有时您可能会遇到选择性地仅从 LEFT JOIN 中检索第一行的挑战,从而导致混乱和看似不成功的结果。
其中一个场景涉及仅获取与提要关联的第一个艺术家。考虑以下简化的数据库结构:
要检索指定的提要及其对应的第一位艺术家,直观的方法可能涉及如下内容:
SELECT * FROM feeds LEFT JOIN feeds_artists ON feeds.id = ( SELECT feeds_artists.feed_id FROM feeds_artists WHERE feeds_artists.feed_id = feeds.id LIMIT 1 ) WHERE feeds.id = '13815'
但是,此查询可能不会产生期望的结果。相反,请尝试以下优化查询:
SELECT * FROM feeds f LEFT JOIN artists a ON a.artist_id = ( SELECT artist_id FROM feeds_artists fa WHERE fa.feed_id = f.id LIMIT 1 ) WHERE f.id = '13815'
在此查询中,技巧在于在 LEFT JOIN 语句中使用内联查询。此内联查询选择与每个提要关联的最早艺术家的 Artist_id,利用艺术家 ID 随着时间增加的假设。因此,生成的查询检索所需的行,展示了数据库查询的强大功能。
以上是如何仅检索特定 Feed 的 LEFT JOIN 中的第一行?的详细内容。更多信息请关注PHP中文网其他相关文章!