1

我有一张桌子:

表名:page_description
deciption_id (pk)、page_id (fk)、language_id (fk)、名称
1, 1, 1, 第一页
2、1、2、首页_second_lang
3, 2, 1, 第二页
4, 3, 2, 第三页

通常,此表包含来自不同语言页面的数据。

第一行表示:第一页名称是语言 1 的“第一页” - 现在是英语。

我想要页表中的每一页,以及 LOWEST language_id 的名称!

所以是这样的:
1, 1, 1, 第一页
3、2、1、第二页
4, 3, 2, 第三页

我有一个查询:

选择 *
FROM 标题描述
按标题 ID 分组
ORDER BY heading_id ASC,
         language_id ASC

它给了我想要的东西。但如果表格如下所示:

表名:page_description
deciption_id、page_id、language_id、名称
1、1、2、首页_second_lang
2, 1, 1, 第一页
3, 2, 1, 第二页
4, 3, 2, 第三页

ORDER BY 不会归还我想要的。我试过。

这里: http ://sqlfiddle.com/#!2/de7bd/6/0

在第一行,我想查看 language_id 1。

4

2 回答 2

1

我假设 page_id 和 language_id 是主键

像这样的东西(sql fiddle

select pd.* 
  from page_description pd 
  join (select page_id, 
               min(language_id) as language_id
          from page_description 
         group by page_id) as a
    using (page_id, language_id);
于 2012-12-29T21:51:00.573 回答
0

我猜你的表的主键是heading_id。如果是这种情况,您不应该对其进行分组(它始终是唯一的)或按其排序:

SELECT * 
FROM heading_description 
ORDER BY language_id ASC
于 2012-12-29T21:48:08.950 回答