Mysql SQL-避免重复的列值

Mysql SQL-避免重复的列值,mysql,sql,Mysql,Sql,查询后,输出为: 我只想按地区返回一行。如何在查询中执行此操作?您希望按地区分组,而不是按id分组 但是,这会给您留下一个难题:您希望为Evora地区显示哪个id值?你要117号还是118号?你将如何确定?你需要一个特定的规则,你想要哪一个。例如,这将为您提供更大的: SELECT t.id, apa.district AS district FROM tbl_activity AS t JOIN tbl_activity_package AS ap ON ap.activity_id = t

查询后,输出为:


我只想按地区返回一行。如何在查询中执行此操作?

您希望按
地区
分组,而不是按
id
分组

但是,这会给您留下一个难题:您希望为Evora地区显示哪个
id
值?你要117号还是118号?你将如何确定?你需要一个特定的规则,你想要哪一个。例如,这将为您提供更大的:

SELECT t.id, apa.district AS district
FROM tbl_activity AS t
JOIN tbl_activity_package AS ap ON ap.activity_id = t.id
JOIN tbl_activity_package_address AS apa ON apa.activity_package_id = ap.id
GROUP BY t.id
ORDER BY apa.district

将MAX()更改为MIN()将为您提供较低的id。您也可以使用更复杂的条件,但这些条件需要首先构建此派生表(子查询),您可以根据该派生表将条件映射到特定的id号。

指定
DISTINCT
(也不要选择带有地区的
id
,因为
不一样)您关心哪个
id
值与“Evora”一起返回吗?@AlmaDo
DISTINCT
不会改变任何东西。您需要选择一个,或者从结果集中删除id并使用distinctFirst,您的问题是这样的“我只想按地区返回一行”。如果这不准确,那么您应该澄清。第二,“同一id的多个地区”可能是(尽管不一定是)表示数据库设计不佳。您应该解释这些表中的每一个代表什么,以便我们更好地了解您试图实现的目标。信息当然很好,但我觉得OP没有提供足够的细节(目前)我想说这就是答案。谢谢,@JoelCoehoorn。但是如果我像您那样更改
GROUP BY
子句,我会得到另一行id 98。@felipe.zkn,那么表设计被破坏,或者连接条件不完整
SELECT MAX(t.id) id, apa.district AS district
FROM tbl_activity AS t
JOIN tbl_activity_package AS ap ON ap.activity_id = t.id
JOIN tbl_activity_package_address AS apa ON apa.activity_package_id = ap.id
GROUP BY apa.district
ORDER BY apa.district