2009-10-27 49 views
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)这里行不通,因为table1table2是一对多的,而对于一个table1的记录,表2可以具有最高优先级= 1,N记录,其中具有最高优先级的另一个table1的记录= 3

回答

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