首页 >数据库 >mysql教程 >如何仅检索特定 Feed 的 LEFT JOIN 中的第一行?

如何仅检索特定 Feed 的 LEFT JOIN 中的第一行?

Barbara Streisand
Barbara Streisand原创
2024-11-11 00:06:02241浏览

How to Retrieve Only the First Row in a LEFT JOIN for a Specific Feed?

LEFT JOIN 仅第一行

在数据库查询领域,LEFT JOIN 操作是组合多个数据的强大工具。表。然而,有时您可能会遇到选择性地仅从 LEFT JOIN 中检索第一行的挑战,从而导致混乱和看似不成功的结果。

其中一个场景涉及仅获取与提要关联的第一个艺术家。考虑以下简化的数据库结构:

  • 提要: id、标题、内容
  • 艺术家: Artist_id、artist_name
  • feeds_artists: rel_id, Artist_id, feed_id

要检索指定的提要及其对应的第一位艺术家,直观的方法可能涉及如下内容:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn