首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite从作为一行返回的多行中选择数据

SQLite从作为一行返回的多行中选择数据
EN

Stack Overflow用户
提问于 2011-05-18 07:34:26
回答 3查看 9.4K关注 0票数 4

我想知道是否可以使用SQLite中的SELECT语句将两行中的数据合并为一行,类似于下面的SQL Server论坛中所建议的方法。

考虑以下基于SQL Server的场景(摘自http://forums.aspfree.com/microsoft-sql-server-14/merge-the-two-rows-in-one-row-245550.html)

假设有一张桌子

Emp

ID |名称

1|x

1|P

2|y|

2|Q

3|W

我们希望输出select语句的结果数据:

Emp_Data

Id | Name-1 | Name-2

1|x|P

2|y|q|

3|w||

帖子中的答案建议使用以下SQL作为可能的解决方案:

代码语言:javascript
复制
SELECT 
   a.ID, 
   [Name-1] = ISNULL(( 
   SELECT TOP 1 Name 
   FROM emp 
   WHERE ID = a.ID),''), 
   [Name-2] = ISNULL(( 
   SELECT TOP 1 b.Name 
   FROM emp b 
   WHERE b.ID = a.ID 
       AND Name NOT IN( 
           SELECT TOP 1 Name 
           FROM emp 
           WHERE ID = b.ID 
       )),'') 
FROM emp a 
GROUP BY a.ID   

使用SQLite,是否可以像在SQL Server中那样使用嵌套的SELECT语句生成列Name-1 & Name-2?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-18 10:19:07

代码语言:javascript
复制
SELECT 
   a.ID, 
   COALESCE(a.Name,'') as "Name-1", 
   COALESCE((SELECT b.Name FROM Emp b 
             WHERE b.ID = a.ID
             AND b.rowid != a.rowid LIMIT 1),'') as "Name-2"
FROM emp a 
GROUP BY a.ID
票数 6
EN

Stack Overflow用户

发布于 2011-07-21 18:07:11

试试这个:

根据id从emp分组中选择id,group_concat(名称);

;)

票数 2
EN

Stack Overflow用户

发布于 2011-10-26 22:11:24

道格的解决方案对我不起作用。然而,下面的代码确实适用于我,但它非常慢……

代码语言:javascript
复制
SELECT 
   a.ID, 
   a.Name AS Name1,
   (SELECT b.Name FROM Emp b 
             WHERE b.ID = a.ID
             AND b.Name != a.Name LIMIT 1) AS Name2
FROM emp a 
GROUP BY a.ID
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6038351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档