2

可能重复:
使用 MySQL 的 SQL 查询

我使用 Java 中的 Jersey 实现了一个 Rest Web 服务(JAX-RS)。我使用休眠从 MySQL 数据库中获取数据。使用此查询:

(Select distinct deliverable.id from Task as t where t.project.id= :id And t.user.username = :name order by t.id desc")
                    .setMaxResults(3)
                    .setLong("id", projectId)
                    .setString("name", username)
                    .list();

我有一个正确的结果是:[275,51,286]。这是为数据库中每个 id 提供的键:

    id       key
---------------------
    275      2.0
    51       cm
    286      19.87

现在我使用这个查询(除了deliverable.key而不是deliverable.id,一切都是一样的):

(Select distinct deliverable.key from Task as t where t.project.id= :id And t.user.username = :name order by t.id desc")
                    .setMaxResults(3)
                    .setLong("id", projectId)
                    .setString("name", username)
                    .list();

结果是:["2.0","19.88","19.99"]。第一个是对的,但是第二个和第三个是完全不同的键。

也许它可以通过“别名”或任何其他方式来解决。你的建议?

4

1 回答 1

0

我找到了答案:

("select d.key from Deliverable as d, Task as t
                where t.deliverable.id = d.id and
                t.id = (select max(t1.id) from Task t1 where t1.deliverable.id = d.id)
                and d.project.id= :id
                and t.user.username = :name
                order by t.id desc")
        .setMaxResults(3)
        .setLong("id", projectId)
        .setString("name", username)
        .list();
于 2012-07-13T18:44:31.310 回答