在现有重复项时获取一条记录

时间:2015-09-24 05:28:18

标签: 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 |
|  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,虽然我试图使用连接这样做,所以我可以设置一个跨db(Postgresql - MySQL)解决方案。

拜托,任何见解都会被贬低! :d

2 个答案:

答案 0 :(得分:0)

static const char lowercase[] = "abcdefghijklmnopqrstuvwxyz";
char *p = strchr(lowercase, text[i]);
if (p) {
  int offset = (p - lowercase + key)%26;
  text[i] = lowercase[offset];
}

答案 1 :(得分:0)

使用ROW_NUMBER()而不是partition

<强>查询

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;

SQL Fiddle