使用左连接时限制右 table 的结果

Limit results of right table when using left join

我阅读了很多关于这个主题的主题,但我无法为我的项目弄明白。我有两个 tables,网格和点。 1 个网格可能有多个点,但是,我只想要点 table 的一个结果(多个点中的哪一个无关紧要)或者当该网格的点中没有条目时为 NULL .

随着查询: SELECT g.id, g.latStart, g.latEnd, g.lngStart, g.lngEnd, p.teamId FROM grids g LEFT JOIN points p ON p.gridId = g.id

我将收到所有网格条目的列表,以及积分。然而,结果并不是我想要的那样。

我还不能放置图片。这是 JSON 中的结果,因为我无法放置图像:

{
 "data":
 [
  {
   "id": 1,
   "latStart": "51.878347",
   "latEnd": "4.388849",
   "lngStart": "51.884847",
   "lngEnd": "4.399849",
   "teamId": 2
  },
  {
   "id": 1,
   "latStart": "51.878347",
   "latEnd": "4.388849",
   "lngStart": "51.884847",
   "lngEnd": "4.399849",
   "teamId": 2
  },
  {
   "id": 1,
   "latStart": "51.878347",
   "latEnd": "4.388849",
   "lngStart": "51.884847",
   "lngEnd": "4.399849",
   "teamId": 2
  },
  {
   "id": 2,
   "latStart": "51.878347",
   "latEnd": "4.399849",
   "lngStart": "51.884847",
   "lngEnd": "4.410849",
   "teamId": null
  },
  {
   "id": 3,
   "latStart": "51.878347",
   "latEnd": "4.410849",
   "lngStart": "51.884847",
   "lngEnd": "4.421849",
   "teamId": null
  },
  {
   "id": 4,
   "latStart": "51.878347",
   "latEnd": "4.421849",
   "lngStart": "51.884847",
   "lngEnd": "4.432849",
   "teamId": null
  }
 ]
}

我收到了id为1的网格的三倍,因为有三个点。如何将收到的点数限制为一个?我试过子查询,但我无法让它们工作。

在此先感谢您的帮助!

I only want one result of the points table (doesn't matter which of the multiple points) or NULL when there are no entries in points for that grid.

如果是这种情况,那么您可以分组并取最小值或最大值 point.teamId

SELECT
    g.id
  , g.latStart
  , g.latEnd
  , g.lngStart
  , g.lngEnd
  , MAX(p.teamId) teamId
FROM grids g 
  LEFT JOIN points p ON p.gridId = g.id
GROUP BY 
    g.id
  , g.latStart
  , g.latEnd
  , g.lngStart