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優先度が最も高いレコードを取得することです。toは 1 対多でMAX(table2.priority)あるため、ここでは機能しないことに注意してください。1 つの table1 レコードに対して、table2 には最高の優先度 = 1 の N 個のレコードを含めることができ、別の table1 の最高の優先度 = 3 のレコードを保持できます。table1table2

4

1 に答える 1

0

結果から必要なレコードが1つだけで、必要なレコードが並べ替えの最後(または最初)になるように並べられている場合は、結果を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を指定して、正しいレコードが取得するレコードであることを確認できることに注意してください。

于 2009-10-27T23:14:36.037 に答える