Mysql 当存在重复项时获取一条记录

Mysql 当存在重复项时获取一条记录,mysql,sql,postgresql,Mysql,Sql,Postgresql,我有一个成分翻译表。为了简单起见,一些列被删除了,但结果中仍然需要 | id | name | ingredient_id | language | | 1 | Water | 11 | en | | 2 | Bell pepper | 12 | en | | 3 | Sweet pepper | 12 | en | 我正试图构建一个查询来检索每个成分的一

我有一个成分翻译表。为了简单起见,一些列被删除了,但结果中仍然需要

| id | name         | ingredient_id | language |
|  1 | Water        |            11 |       en |
|  2 | Bell pepper  |            12 |       en |
|  3 | Sweet pepper |            12 |       en |
我正试图构建一个查询来检索每个成分的一个单一成分翻译,就像预期的结果一样

| id | name         | ingredient_id |
|  1 | Water        |            11 |
|  2 | Bell pepper  |            12 |
到目前为止,我正在尝试使用这个查询

select it1.*
from ingredient_translations it1 
  left outer join ingredient_translations it2 
    on  it1.ingredient_id = it2.ingredient_id
    and it1.id < it2.id 
where it1.language = 'es'
我正在使用postgresql,尽管我试图使用连接来实现这一点,这样我就可以设计一个跨db的postgresql-MySQL解决方案

请,任何见解都将受到赞赏!!!:D

在分区上使用行数

WITH CustomerCTE (
  SELECT t1.*,ROW_NUMBER() OVER (PARTITION BY ingredient_id ORDER BY id DESC) AS RN
  FROM ingredient_translations  t1
  INNER JOIN ingredient_translations   t2 ON t1.ingredient_id  = t2.ingredient_id  
  )

SELECT * FROM CustomerCTE WHERE RN = 1
ORDER BY id;
质疑


mysql/sql server?我正在使用postgresql,尽管我试图使用连接来实现这一点,这样我就可以安装一个跨db的postgresql-mysql解决方案。
WITH CustomerCTE (
  SELECT t1.*,ROW_NUMBER() OVER (PARTITION BY ingredient_id ORDER BY id DESC) AS RN
  FROM ingredient_translations  t1
  INNER JOIN ingredient_translations   t2 ON t1.ingredient_id  = t2.ingredient_id  
  )

SELECT * FROM CustomerCTE WHERE RN = 1
ORDER BY id;
select id,name,ingredient_id,language from 
(
    select id,name,ingredient_id,language,
    row_number() over
    (
        partition by ingredient_id
        order by id
    ) rn
    from tbl_Name
)t
where t.rn < 2;