在SQL中编写“Comparator”

时间:2010-08-10 08:13:37

标签: sql comparator

我有以下问题:

根据以下规则查找表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)返回多个值。

有人能帮助我吗?

非常感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

听起来像是家庭作业(如果不是,请告诉我)。所以你会得到一般答案。更多细节可能需要您指定数据库类型。

JOIN表格。将ORDER BY语句与TOP语句结合使用。