代码之家  ›  专栏  ›  技术社区  ›  Andrew

在select中命名组\u concat列

  •  2
  • Andrew  · 技术社区  · 14 年前

    我有两张桌子。一个包含一些列表,另一个包含每个列表的项。

    我想创建一个select语句来获取lists表中的行,同时还创建一个列,该列是每个列表中项目的逗号分隔摘要。

    我的工作如下:

    select
        master._id as _id,
        master.name as name,
        master.created_on as created_on,
        group_concat(items.name, ', ')
    from
        tablea master
    join
        tableb items
    on
        master._id = items.master_id
    group by
        master._id
    

    select
        master._id as _id,
        master.name as name,
        master.created_on as created_on,
        group_concat(items.name, ', ') as summary
    from
        tablea master
    join
        tableb items
    on
        master._id = items.master_id
    group by
        master._id
    

    执行此操作时,会出现sql错误: “SQL错误:靠近”summary“:语法错误

    我怎样才能实现我想做的事?

    我还想按字母降序排列组中的项目,但命名列是我的首要任务。

    1 回复  |  直到 14 年前
        1
  •  4
  •   Thomas Mueller    14 年前

    “AS”是可选的。但是,有“AS”和没有“AS”对我来说都很好(使用SQLite版本3.6.14.2):

    drop table tablea;
    drop table tableb;
    create table tablea(_id int, name varchar, created_on varchar);
    create table tableb(master_id int, name varchar);
    insert into tablea values(0, 'Hello', '2010');
    insert into tableb values(0, 'x');
    select
        master._id as _id,
        master.name as name,
        master.created_on as created_on,
        group_concat(items.name, ', ') as summary
    from
        tablea master
    join
        tableb items
    on
        master._id = items.master_id
    group by
        master._id