我读了很多关于这个主题的主题,但我无法弄清楚我的项目。我有两张桌子,网格和点。 1个网格可能有多个点,但是,我只想要一个点表的结果(不管多个点中的哪一个不重要)或者当该网格的点没有条目时为NULL。 / p>
使用查询:
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,因为有三个点。如何将收到的点数限制为一个?我已经尝试了子查询,但我无法让它们工作。
先谢谢你帮助我!
答案 0 :(得分:0)
我只想要点表的一个结果(不管多个点中的哪一个不重要)或者当该网格的点没有条目时为NULL。
如果是这种情况,那么您可以分组并采用最小或最大点.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