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;