SELECT MAX(DATE) FROM YOUR_TABLE
上面的答案似乎不能满足 OP 的需求。
插入/更新触发器后更新的答案
DELCARE @latestState varchar;
DELCARE @latestDate date;
CREATE TRIGGER latestInsertTrigger AFTER INSERT ON myTable
FOR EACH ROW
BEGIN
IF OLD.DATE <> NEW.date THEN
SET @latestState = NEW.state
SET @latestDate = NEW.date
END IF
END
;
CREATE TRIGGER latestUpdateTrigger AFTER UPDATE ON myTable
FOR EACH ROW
BEGIN
IF OLD.DATE = NEW.date AND OLD.STATE <> NEW.STATE THEN
SET @latestState = NEW.state
SET @latestDate = NEW.date
END IF
END
;
您可以使用以下查询来获取添加/更新的最新记录:
SELECT DATE, STATE FROM myTable
WHERE STATE = @latestState
OR DATE = @latestDate
ORDER BY DATE DESC
;
结果:
DATE STATE
November, 30 2012 00:00:00+0000 state one
November, 28 2012 00:00:00+0000 state two
November, 27 2012 00:00:00+0000 state two
上述查询结果需要根据您的需要限制为 2、3 或 n。
坦率地说,您似乎想根据您提供的数据样本从两列中获取最大值。假设您的状态仅随日期增加。只有我希望如果state
是integer
:D 那么两个列上的两个最大子查询的联合将很容易解决它。字符串操作正则表达式仍然可以找到状态列中的最大值。最后这种方法需要limit x
。然而它仍然有漏孔。无论如何,我花了一些时间来弄清楚你的需要:$