1

我有以下问题:

根据以下规则找到表 A 中的最高行:

表 A
列:V_Date 日期、类型 int、H_Date 日期

1) 找到最高的 V_Date
2) 如果 V_Dates 相同,则找到具有最高优先级的行,其中优先级在表 B 中定义,列 Type int,Priority int
3) 如果 V_Date 和 Priority 相同,找到具有最高优先级的行最高的H_Date(那么就保证是唯一的)

优先级不明显,因此 max (prio) 返回多个值。

有谁能够帮我?

非常感谢。

4

2 回答 2

2

使用 ORDER BY 并将结果限制为一行:

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 回答