我有这样的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)
在这里不起作用,因为table1
到table2
是一对多,而对于一个table1记录,table2可以有N个记录,其中优先级最高= 1,其中另一个table1记录的优先级最高= 3。
答案 0 :(得分:0)
如果您只需要结果中的一条记录,并且它们的顺序使您所需的记录位于排序的结尾(或开头),则只需将结果限制为一。即:
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以确保正确的记录是您检索的记录。