【问题标题】:Get the record by the lowest ID通过最低 ID 获取记录
【发布时间】:2012-12-14 16:48:42
【问题描述】:

我有一张桌子:

表名: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。

【问题讨论】:

    标签: mysql group-by record min


    【解决方案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);
    

    【讨论】:

    【解决方案2】:

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

    SELECT * 
    FROM heading_description 
    ORDER BY language_id ASC
    

    【讨论】:

    • sqlfiddle.com/#!2/de7bd/6/0 不要工作!在第一行,我想要 language_id = 1 name。
    • 我似乎很难准确理解您想要什么,但 this sql fiddle 在第一行确实有 language_id = 1。
    • 是的,但我想要一个页面只查询一次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2015-11-20
    相关资源
    最近更新 更多