我只是想知道是否可以在一个日期字段中有多个记录?对于 VARCHAR,我知道这行得通:
dater = CONCAT_WS(',', dater, '$dater' )
但是我只是想知道 DATE 字段是否可以实现同样的目的?这样做的原因是每次更新记录时都会保存日期。非常感谢任何帮助。
例子: 19-12-2016, 20-12-2016, 21-12-2016
最佳答案
最好的办法是将更新表添加到您的架构中。
假设您的主表名为 info
并且包含这些列。
info_id INT (autoincrementing)
info_val VARCHAR(250)
info_last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
然后,您添加一个名为 info_updates
的表。它有这些列:
info_update_id INT (autoincrementing)
info_id INT (points to info table row)
info_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP
info_why VARCHAR(250) (text describing update, if you like)
然后,每次在 info
中插入或更新一行时,也会在 info_updates
中插入一行。
然后您将能够获取更新历史记录,最近的更新排在第一位,如下所示:
SELECT info.info_id, info.info_val,
GROUP_CONCAT(info_updates.info_update ORDER BY info_updates.info_update) updates
FROM info
JOIN info_updates ON info.info_id = info_updates.info_id
GROUP BY info.info_id, info.info_val
ORDER BY MAX(info_updates.info_update) DESC
如果您将更新时间戳存储到以逗号分隔的文本字段中,那么这些不错的检索内容都无法正常工作。
这看起来像是额外的工作。但是,从长远来看,逗号分隔的文本字段会导致更多的额外工作。
教授Richard Snodgrass 写了一本关于这个主题的好书并出版了。 Developing Time-Oriented Database Applications in SQL.
关于PHP、MySQL - DATE 字段中的多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41265491/