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