Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除SQL on联接中结果的重复项_Sql_Postgresql_Join - Fatal编程技术网

删除SQL on联接中结果的重复项

删除SQL on联接中结果的重复项,sql,postgresql,join,Sql,Postgresql,Join,我想做一个查询,它不会从表2中同时获取AAA BBB值。每当我使用连接运行一个查询时(我尝试了所有不同的连接),它都会在结果中给我重复的值(001-AAA和001-BBB)。结果查询应该只有3个值AAA CCC DDD。这可能吗 SELECT *, ST_AsGeoJSON(geom,5) AS geojson FROM table1 LEFT JOIN table2 ON table.id2=table2.id2 GROUP BY table.id2 我尝试了上面的查询,但它出错了。列

我想做一个查询,它不会从表2中同时获取AAA BBB值。每当我使用连接运行一个查询时(我尝试了所有不同的连接),它都会在结果中给我重复的值(001-AAA和001-BBB)。结果查询应该只有3个值AAA CCC DDD。这可能吗

SELECT *, ST_AsGeoJSON(geom,5) AS geojson  FROM table1  
LEFT JOIN table2 ON table.id2=table2.id2
GROUP BY table.id2
我尝试了上面的查询,但它出错了。列“table2.Id2”必须出现在GROUPBY子句中或在聚合函数中使用

table 1

    id  test        

    001  |  A
    002  |  B
    003  |  C
    007  |  D

table2
id2(fk)  test2      

001    |  AAA
001    |  BBB
003    |  CCC
007    |  DDD
我对SQL相当陌生,所以我道歉。 任何帮助都将不胜感激。
谢谢

尝试以下操作,您将收到错误,因为您没有将
表2.id2
包含在您的
分组依据中

SELECT *, 
    ST_AsGeoJSON(geom,5) AS geojson  
FROM table1  t1
LEFT JOIN table2 t2
ON t1.id2=t2.id2
GROUP BY 
 t1.id2,
 t2.id2

您根本不需要
分组依据。您没有聚合函数:

SELECT *, ST_AsGeoJSON(geom, 5) AS geojson 
FROM table1 LEFT JOIN
     table2
     ON table1.id2 = table2.id2;
如果希望每个
id2
有一行,可以在
上使用
DISTINCT:

SELECT DISTINCT ON (table1.id2) *, ST_AsGeoJSON(geom, 5) AS geojson 
FROM table1 LEFT JOIN
     table2
     ON table1.id2 = table2.id2
ORDER BY table1.id2;

注意:当存在重复项时,这将返回任意匹配行。如果您想要一个特定的值,那么在
ORDER BY

中添加第二个键,您的预期输出是什么?我让它与SELECT DISTINCT一起工作。还有其他方法吗?可能有,但不清楚您真正想要什么。请在代码问题中给出一个--cut&paste&runnable代码,包括作为代码输入的最小代表性示例;期望和实际输出(包括逐字记录错误消息);标签和版本;清晰的说明和解释。给出你能给出的最少代码,即你显示的代码是OK的,扩展为你显示的代码是不OK的。(调试基础。)用于包含DBMS和DDL(包括约束和索引)的SQL,并将其作为格式化为表的代码输入。停止尝试编码你的总体目标,并解释你期望从给定的代码中得到什么以及为什么。你的错误消息是一个常见问题。在考虑发帖之前,请阅读您的教科书和/或手册,并在谷歌上搜索任何错误消息或您的问题/问题/目标的许多清晰、简洁和准确的措辞,包括或不包括您的特定字符串/名称和网站:stackoverflow.com&tags;阅读许多答案。如果你发布一个问题,用一句话作为标题。反思你的研究。请参见文本上方的投票箭头(&S)。PS请通过编辑澄清,而不是评论。谢谢回复!嗯,现在看来我现在不能点菜了。选择DISTINCT ON(eats2.id2)id2,*从eats2左侧连接eats2\u imgs ON eats2.id2=eats2\u imgs.id2\u eats2;ORDER BY eats2.id2错误:语法错误位于或接近“ORDER”,我让它这样工作。从eats2左侧选择DISTINCT ON(eats2.id2,eats2.score)*加入eats2上的eats2\u imgs。id2=eats2\u imgs.id2\u eats2按eats2.score说明顺序谢谢!