从表格和广告中选择列,'除了最后一行

时间:2015-04-05 23:13:11

标签: sql firebird

在此

SELECT  field + ',' FROM table

我得到这样的东西

1,
2,
3,

但我需要得到

1,
2,
3

最后一个帽子没有逗号。

5 个答案:

答案 0 :(得分:2)

你应该检查这个功能

LIST()

此问题也可能重复,您可以查看下面的问题,看看是否有符合您需求的答案:Concatenate many rows into a single text string?

答案 1 :(得分:0)

如果您使用的是mysql,这将返回your_table中your_column中所有值的逗号分隔列表(在一行中):

  SELECT GROUP_CONCAT(your_column) FROM your_table

默认使用逗号,但SEPARATORDISTINCTORDER BY可以specify more options

答案 2 :(得分:0)

如果有唯一字段,您可以尝试这种方式获取最后一行而不使用逗号。

SELECT 
CASE when isnull(B.field,'')='' THEN A.field+',' ELSE A.field END 
FROM [table] A
left join
(
    SELECT TOP 1 field FROM [table] ORDER BY unique_field DESC
)B ON A.field=B.field
ORDER BY A.unique_field

答案 3 :(得分:0)

看来firebird允许您通过使用rows关键字来限制行:http://www.firebirdsql.org/refdocs/langrefupd20-select.html#langrefupd20-select-rows

假设它也可以在内联视图中使用,您可以运行以下命令:

select case when x.field is not null
             then t.field
              else t.field  + ','
               end as field_alias
from tbl t
left join
        (
        select field
        from tbl
        order by field desc
        rows 1 to 1
        ) x
           on t.field = x.field
order by 1

答案 4 :(得分:0)

As mentioned above MySQL would return comma separated values by default, in the past I've changed the separator to a space -

GROUP_CONCAT(table_column SEPARATOR " ")