【问题标题】:How to write subquery in Criteria如何在 Criteria 中编写子查询
【发布时间】:2010-12-10 16:10:10
【问题描述】:

我有一个这样的 SQL:

Select tbl.id, tbl.name 
From 
 (select table1.id, table1.name
 from table1
 inner join table2 on table1.id = table2.id
 order by table2.priority
 ) tbl 
group by table1.id
order by table1.name

我想要实现的是首先排序(按table2.priority 排序),然后以最高优先级获得table1.id, name 的记录。 注意,MAX(table2.priority)在这里不起作用,因为table1table2是一对多的,对于一个table1记录,table2可以有N条最高优先级=1的记录,其中另一个table1最高优先级的记录= 3.

【问题讨论】:

    标签: group-by subquery criteria torque


    【解决方案1】:

    如果您只需要结果中的一条记录,并且它们的顺序使得您需要的记录位于排序的末尾(或开头),只需将结果限制为一条即可。即:

    SELECT tbl.id, tbl.name
    FROM (
        SELECT table1.id, table1.name
        FROM table1
        INNER JOIN table2 ON table1.id = table2.id
        ORDER BY table2.priority
    ) tbl
    GROUP BY table1.id
    ORDER BY table1.name
    LIMIT 1;
    

    请注意,根据顺序,您可以指定 ASC 或 DESC 以确保您检索到的记录是正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 2015-02-21
      • 2011-09-27
      • 1970-01-01
      • 2011-06-05
      相关资源
      最近更新 更多