我的数据库中有2个表。一个名为data
,另一个名为changes
。
表的列是
Data
------------
|id | name |
|-----------
|1 | Test |
|2 | Hello|
------------
changes
------------------------------------
|id | name | related_id | Comments |
|-----------------------------------
|1 | Test | 1 | Example |
|2 | Hello| 2 | Example2 |
|3 | Hello| 2 | Example3 |
------------------------------------
如您所见,changes
。related_id
是data
。id
的外键。
changes
可以有多行相同的name
和related_id
以及不同的评论。
运行此查询后,我意识到会返回多行,例如,Hello
可能会出现2次。
SELECT DISTINCT data.name, changes.comments FROM data LEFT JOIN changes ON data.id = changes.related_id
Result
--------------------
|name | comments |
|-------------------
|Hello | Example2 |
|Hello | Example3 |
--------------------
如何确保只返回1行?我开始寻找答案,许多人使用DISTINCT
说明了,但在我的情况下它不起作用。
提前致谢。
答案 0 :(得分:15)
如果您只希望data
表中的每个名称都有一条记录,并且该记录可以是任何记录,那么您可以按唯一列(name
)进行分组,在另一列上使用聚合函数,如max()
SELECT data.name, max(changes.comments)
FROM data
LEFT JOIN changes ON data.id = changes.related_id
GROUP BY data.name