0

我有一个这样的 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)这里不起作用,因为table1totable2是一对多,并且对于一个 table1 记录,table2 可以有 N 条最高优先级 = 1 的记录,而另一个 table1 最高优先级 = 3 记录。

4

1 回答 1

0

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

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 以确保您检索到的记录是正确的。

于 2009-10-27T23:14:36.037 回答