我在使用sql问题之前已经使用了堆栈溢出并且成功了。
这次我的下一期可能不会那么成功。
我有一个表格,我们会调用Statements_1
,它有大约50列,可以说10,000行。
每列都有一个语句,如“我的狗跑”或列为空。
列标记为1,2,3等,直到50.
除了行之外,所有行都以简单的pk开头,从1开始直到10,000。
表格每行的数据长度不一致。
例如,第1行在连续5列中有一个语句,第2行在37个连续列中有一个语句,第3行在19个连续列中有一个语句,等等。
我需要做的是编写一些简单的代码,使用表Statements_2列Bullet中的语句创建一个html格式的bullet类型段落。例如:
我的狗跑了 14个苹果味道很好我理解如何只是连接整行列,但这会浪费cpu和脚本运行时间,并最终在网页上留下大量的空白区域,这些空白区域存在空数据将取决于行列总和的数据量。
它不仅浪费时间,而且内存建立得如此之快我必须将脚本限制为一次80个,这样服务器就不会锁定并在重载内存使用后给我一个网关超时。
关于从哪里开始的任何建议?
答案 0 :(得分:0)
你在找这个吗?
SELECT id,
CONCAT_WS(' ',
COALESCE(col1, ''),
COALESCE(col2, ''),
COALESCE(col3, ''),
COALESCE(col4, ''),
COALESCE(col5, '')) bullet
FROM Statements_1
输出:
| ID | BULLET | ---------------------------------- | 1 | my dog runs | | 2 | 14 apples taste good | | 3 | yes this is fun | | 4 | I am wasting my resources |
这是 SQLFiddle 演示
COALESCE
返回列表中的第一个非NULL值。在示例中,如果列值为NULL,则返回空字符串,否则返回值本身
现在CONCAT_WS()
是将一堆值与分隔符连接起来的一种方便的方法。