我有一个这种形式的成分翻译表(为简单起见,一些列已被删除,但结果中仍然需要)

| 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'


但它现在给出了预期的结果:/

flag


我正在使用postgresql,尽管我尝试使用连接来执行此操作,因此我可以使用跨数据库(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;

09-05 06:22