首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite,选择具有相同条件的值(在所有表中)

SQLite,选择具有相同条件的值(在所有表中)
EN

Stack Overflow用户
提问于 2012-12-07 19:13:12
回答 2查看 261关注 0票数 1

我有一个类似于下面给出的sqlite数据库表

代码语言:javascript
复制
Name   | Surname | AddrType | Age | Phone
John   | Kruger  | Home     | 23  | 12345
Sarah  | Kats    | Home     | 33  | 12345
Bill   | Kruger  | Work     | 15  | 12345
Lars   | Kats    | Home     | 54  | 12345
Javier | Roux    | Work     | 45  | 12345
Ryne   | Hutt    | Home     | 36  | 12345

我想为表中的每一行选择与相同"Surname“值匹配的Name值。

例如,对于第一行,查询将是"select Name from Kruger where Surname=‘myTable’“,而对于第二行,查询将是"select Name from Kats where Surname='Kats‘an....”。

是否可以遍历整个表并像这样选择所有值?

PS :我将在C++应用程序中使用这些方法,另一种方法是使用sqlite3_exec()并逐行处理。我只想知道,对于同样的方法,是否还有其他可能的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-08 00:53:25

我会这么做:

代码语言:javascript
复制
sqlite> SELECT group_concat(Name, '|') Names FROM People GROUP BY Surname;
Names
----------
Ryne
Sarah|Lars
John|Bill
Javier

然后在C++中使用"|“分隔符(或在group_concat函数中选择的任何其他分隔符)拆分"Names”的每个值。

票数 0
EN

Stack Overflow用户

发布于 2012-12-08 00:51:07

基本上,您只想排除没有伙伴的任何记录。

一些简单的事情,比如针对表本身的连接表应该是有效的:

代码语言:javascript
复制
SELECT a.Name 
FROM tab AS a
JOIN tab AS b 
    ON a.Surname = b.Surname;

如果发生率很高(并且对于所有数据集来说总是很高),那么只返回完整的排序表并自己进行重复检查可能会更快。不过,这将是一个相当有力的假设。

代码语言:javascript
复制
SELECT Name
FROM tab
SORT BY Surname;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13761964

复制
相关文章

相似问题

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