如何通过SQL语句合并数据库表中的数据?

时间:2009-03-11 22:59:13

标签: sql merge insert interbase

我对Interbase有一个有趣的问题。我有一个记录集,其中包括数据输入字段和每个记录的时间戳。我希望能够从记录中复制时间戳,以便在一天结束时最终字段将按以下方式读取:

TIMESTAMP <Carriage return> <carriage return> Original data in field

因此,显示字段时的最终外观是:

time of entry

data that was entered

可悲的是,这必须在数据库级别完成,因为我无法访问前端软件。

我能够提出的唯一解决方案是选择,使用自定义软件执行合并,然后逐行生成适当的SQL来更新记录。由于每天有几百条记录,因此速度相当慢,因此基于SQL的解决方案将是理想的。

过去,我成功地使用||将固定数据添加到字符串的末尾,以便与UPDATE指令连接(数据||所有记录的相同信息“)但无法以下列格式进行此项工作:

result of search||original data 

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

UPDATE FOO_TABLE
  SET DATA_ENTRY_FIELD = DATA_ENTRY_FIELD || TIMESTAMP_FIELD
WHERE ...;

这应该可行(如果DATA_ENTRY_FIELD有连接空间)。如果不起作用,请更具体地说明您遇到的问题。

答案 1 :(得分:0)

Craig的答案应该有效,但如果你想要回车,你也需要插入它们:

UPDATE  foo_table
SET     data_entry_field = timestamp || '\n\n' || data_entry_field
WHERE   ...

(假设Interbase接受\n作为回车 - 在Windows上应该只是\r甚至\r\n,但\n是相当标准的。)

MySQL无法识别||并置运算符,因此您必须使用CONCAT()函数。 Interbase可能是一样的。