0

我有一个包含两行数据的数据库。我想将前一行中的一列和当前行中的一列组合起来以创建 COMBINED 列。(我还想以某种方式格式化 FORMATTED 列以自动小写 RAW 字符串的第一个字母,除非它是“I”,删除标点符号,并在末尾添加一个句点)。

RAW..............|..FORMATTED..........|.....COMBINED<br>
I have a cold.|..When I have a cold..| <br>
I get sniffly.....|..When I get sniffly,....|......When I have a cold, I get sniffly.

我如何让 SQL 在最近行的 COMBINED 列中创建所需的数据(即“当我感冒时,我会感到头晕目眩”)?我只设法使用 SELECT CONCAT('formatted', 'raw') FROM 'table' ORDER BY id DESC LIMIT 1 组合两列数据(但显然这给了我“当我嗅到嗅觉时,我会嗅到嗅觉。” -我需要倒数第二行的“格式化”,以及最近一行的“原始”。

对于任何一个问题,任何帮助都将不胜感激。

4

1 回答 1

0

很抱歉,我试过了,这是一种非常暴力的方法,但它可能会奏效。

SELECT CONCAT((SELECT formatted 
               FROM 'table' 
               ORDER BY id 
               DESC LIMIT 1),
              (SELECT raw
               FROM 'table' 
               ORDER BY id 
               DESC LIMIT 1 OFFSET 2));

当它工作时,编写一个存储过程,循环这个查询并将限制和偏移值保持为 i 和 i+1。

或者,将数据转储到文本文件并使用 ruby​​!

于 2013-08-07T20:01:00.897 回答