1

次の問題があります。

次のルールに従って、テーブル A の最上位の行を見つけます。

表 A
列: V_Date Date、Type int、H_Date Date

1) 最高の V_Date を見つける
2) V_Date が同じ場合、優先度が最も高い行を見つけます。ここで、優先度は表 B で列 Type int、Priority int で定義されています
3) V_Date と Priority が同じ場合、次のものを見つけます最高の H_Date (一意であることが保証されます)

優先度は明確ではないため、max (prio) は複数の値を返します。

誰でも私を助けることができますか?

どうもありがとうございました。

4

2 に答える 2

2

ORDER BY を使用して、結果を 1 行に制限します。

SELECT *
FROM TableA
JOIN TableB ON TableA.Type = TableB.Type
ORDER BY V_Date DESC, Priority DESC, H_DATE DESC
LIMIT 1

正確な構文は、特定のデータベースによって異なる場合があります。

  • MySQL と PostgreSQL では、上記のように使用できますLIMIT 1
  • SQL Server では、 を使用できますSELECT TOP(1)
  • Oracle では、 を使用できますSELECT * FROM (subquery here) WHERE rownum = 1
于 2010-08-10T08:17:47.280 に答える
0

宿題のように聞こえます (そうでない場合は教えてください)。したがって、一般的な答えが得られます。詳細については、db タイプの指定が必要になる場合があります。

JOINテーブル。ORDER BYステートメントと組み合わせてステートメントを使用しTOPます。

于 2010-08-10T08:17:59.227 に答える