【问题标题】:Update a value and a table with a foreign key使用外键更新值和表
【发布时间】:2022-01-03 14:26:47
【问题描述】:
ticketId(**) timeExpected timeElapsed
187 5 5
225 4 8
856 8 15
782 10 8

**主键 *外键

id(**) (*)ticketId beyondTime
1 187 0
2 225 1
3 856 1
4 782 0

我必须知道他的哪张票超时了,我在我的数据库中已经记住了这一点,但我无法用 SQL 弄清楚。我想知道一张票什么时候过期,比如票号 225,我想用二进制 1 更新另一个表,表示“过期”,0 表示“好”。

当我在第一个表中执行“timeExpected - timeElapsed”时,如果票证超过预期时间,我不知道是否可以更新“beyondTime”表。

【问题讨论】:

  • 两个表的主键是什么:idticketId?从例子中看不清楚。
  • 856票呢?也过时了。
  • 对不起,我刚刚编辑了,现在应该清楚了,否则告诉我我会更正

标签: mysql database


【解决方案1】:

首先,让我们简化您正在寻找解决方案的问题:

比较表中行的两个数据字段值

我相信这基本上就是您想要做的。当然,您可以根据比较做出决定,并根据需要采取相应的行动,例如更新另一个表中的某些值。

但是,如果您要查找的只是一份报告,那么您所需要的只是一个带有为您进行比较的逻辑的 select 语句。

您可以为此使用 SQL Case 语句。如果您想看一看,Here 是一个简单的指南。

你需要的select语句是这样的:

select ticketId, (case when timeElapsed > timeExpected then 1 else 0 end) as beyondTime from tickets

结果会是这样的:

要记住两件事:

  1. 不要对负面观点感到失望,继续提问:)
  2. 确定您需要帮助的问题并具体说明您的问题。我建议你更新这个问题。

祝你好运!

【讨论】:

  • 非常感谢,是的,这正是我想做的。谢谢@Alizera
  • 完美!因此,将其标记为正确答案,以便其他人知道这是该问题的正确解决方案。如果你愿意,你也可以给它一个点:)祝你好运@Zetti
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-26
  • 1970-01-01
  • 2010-12-20
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多