SQL - 如何获取两个不同表之间的最新条目? (时间戳没有被存储)
P粉244155277
P粉244155277 2023-09-07 00:14:25
0
1
603

我正在开发一个正在进行的项目,其中我正在处理引号,数据库结构组织得不好,我无法对数据库架构进行太多更改来修复它。

在数据库中:

  • 两种类型的报价并保存在两个不同的表中。
  • 假设 regular_quotespremium_quotes 是两个表。
  • 情况是,没有一个表存储日期/时间,没有任何与created_at相关的列,也没有备用存储日期/时间
  • 我必须从这两个表中检查哪个表具有最新条目。

表1 常规引号

id | name | quoteno | status  | .....|
------------------------------------------
1  | name1| RQ-909099 | pending  | .....|
2  | name2| RQ-800099 | pending  | .....|
3  | name3| RQ-965099 | approved | .....|

表2 premium_quotes

id | name | quoteno | status  | .....|
------------------------------------------
1  | name1| PQ-209099 | pending  | .....|
2  | name2| PQ-300099 | pending  | .....|
3  | name3| PQ-965099 | pending  | .....|

我所做的是:

  • 创建了一个新表recent_quote_meta
  • 具有以下列:idquote_idquote_typecreated_atupdated_at, deleted_at
  • 每当创建 qny 报价时,我都会将其存储在 recent_quote_meta 中,并使用 quote_id
  • 从中我得到了最近的quote_idquote_type,基于此我正在相应地获取和显示报价

但情况是,他们不希望我对数据库进行任何更改。而且我认为这无法在当前的场景中完成。

有没有办法可以获取这些表的最新报价?它可以是 regular_quotespremium_quotes

谢谢!

P粉244155277
P粉244155277

全部回复(1)
P粉956441054

如果没有任何时间戳列,实际上无法确定两个表中哪一个具有最新的报价条目。我们可以尝试一些技巧,但您的情况将决定它们是否值得信任。

一种方法是,您可以检查 ID 是否按顺序分配,并且由于您知道两个表中的最新 ID,因此您可以比较它们以确定哪个表具有最新报价。例如,如果 regular_quotes 表中最新的 id3,并且 regular_quotes 表中最新的 id >premium_quotes表为5,可以断定premium_quotes表中有最新的报价。

SELECT MAX(id) AS latest_regular_quotes_id FROM regular_quotes;


SELECT MAX(id) AS latest_premium_quotes_id FROM premium_quotes;

这些将返回每个表中的最高 ID 值。您可以比较这两个值来确定哪个表具有最新报价,其中 id 的值最高。

理想情况下,您可能需要告诉管理员解决此问题。

希望这对您有用。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板