【问题标题】:MySQL: Attendance Monitoring App TroubleMySQL:考勤监控应用程序故障
【发布时间】:2016-05-17 23:05:17
【问题描述】:

如何在不将所有其他字段替换为同一行字段的情况下更新特定字段。

例如:我想改变这个。(图1)

    date_id    employee_id    time_in     time_out
      1            3           1:00P        2:00P
      2            2           3:20P        3:49P
      3            2           3:20P        3:49P

到(图2)

    date_id    employee_id    time_in     time_out
      1            3           1:00P        2:00P
      2            2           3:20P        3:49P
      3            2         > 5:10P        6:29P <

但发生的情况是,它又回到了图 1。 覆盖与employee_id 具有相同值的所有字段。 还有其他方法吗?

我使用的查询:

UPDATE '出席' SET time_out = ? WHERE employee_id = ?

是的,我正在制作简单的 Time In 和 Time Out 应用程序 (Java)。

[解决了我的问题] 但不是问题,无法使用“employee_id”更新它。

【问题讨论】:

    标签: java mysql timestamp timeout monitoring


    【解决方案1】:

    正如 chalitha lawanga 所说,但简单一点:

    UPDATE 'attendance' SET time_out = ? WHERE date_id = ?
    

    如果date_id 是一个PK,那么您的语句中不需要employee_id

    【讨论】:

    • 其实我需要这个employee_id来识别谁计时。
    • @PaulØmega 但它不是必需的。如果date_id 是一个PK,那么employer_id 是多余的。
    • 我需要员工 ID 以便稍后用于报告。
    • 您不需要从表中删除employee_id 列。 @romanoza 说只在更新特定行时使用date_id 行。
    • @PaulØmega 没错。您应该只从UPDATE 语句中删除employee_id,而不是从表中。
    【解决方案2】:

    使用主键来识别确切的行,如果你没有主键 试试这个方法:

    UPDATE 'attendance' SET time_out = ? WHERE employee_id = ? AND date_id=?
    

    【讨论】:

    • 好的,谢谢,这可能会有所帮助,让我在尝试用 Java 编写代码后回复您。我对这个数据库逻辑的东西真的很陌生。
    • 这是一个非常简单的逻辑,你只需要考虑特定行的唯一数据。
    • 但我只需要使用employee_id。不会碰 date_id(这是唯一的)。不过,您的答案编码仍然有问题。
    • 如果不触摸date_id,就无法更新您的行。
    • 所以我想要的东西是不可能的,我明白了,谢谢你的回复。我想要的是只使用employee_id(它有很多重复而不是唯一的)来更新time_out。所以我稍微改变了我的程序,所以我想现在可以了。
    猜你喜欢
    • 2011-10-27
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    相关资源
    最近更新 更多