栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

查询以返回一行,该行中的单独列中包含多个项目

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

查询以返回一行,该行中的单独列中包含多个项目

您可以使用group_concat:

SELECt a.name, a.city, a.address, a.abbrv, b.urltype,     group_concat(b.url SEPARATOR ' ')FROM jos__universityTBL as a LEFT JOIN jos__university_urlTBL as b on b.universityID = a.ID WHERe a.stateval = 'CA'GROUP BY a.name, a.city, a.address, a.abbrv, b.urltype

在SQL中很难生成动态列。尽可能查看是否可以将其移至客户端。如果不是,则可以在子查询中添加行号,并为每个行号分配自己的列。这是一个表稍有不同的示例:

drop table if exists Universities;drop table if exists Urls;create table Universities (  id int auto_increment primary key, Name varchar(50));create table Urls (  id int auto_increment primary key, UniversityId int, Url varchar(50));insert into Universities (name) values ('USC'), ('SJSU');insert into Urls (UniversityId, Url) values     (1,'http://a/'), (1,'http://b/'),    (2,'http://c/'), (2,'http://d/'), (2,'http://e/');SELECT    Name,   group_concat(case RowNr when 1 then Url end) as FirstCol,   group_concat(case RowNr when 2 then Url end) as SecondCol,   group_concat(case RowNr when 3 then Url end) as ThirdColFROM (    SELECt         u.Name    ,   l.Url    ,   (@i := case when @LastUni = u.Name then @i + 1 else 1 end) as RowNr    ,   @LastUni := u.name    FROM Universities u    JOIN Urls l ON u.id = l.UniversityId    JOIN (SELECT @i := 0, @LastUni := '') init) subqueryGROUP BY Name;

打印:

SJSU     http://c/  http://d/   http://e/USC      http://a/  http://b/   NULL


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/375895.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号