gpt4 book ai didi

sql - 返回了重复的(ish)行。如何消除?

转载 作者:行者123 更新时间:2023-12-03 18:30:10 29 4
gpt4 key购买 nike

我不精通 SQL 或 SQLITE。

我正在运行一个简单的选择和加入语句。我基本上是从 sqlite3 数据库中提取联系人并手动转储到 csv 中。

我遇到的问题是,我在一张表中有姓名和 ID,在另一张表中有电话号码和标签。其中,label 表示“Mobile”、“Work”等。

因此,我将名称的 ID = 加入电话号码的所有者 ID。

我发现(这很有意义)是,如果我有一个人的三个电话号码,那个人会出现三次。

IE:

John Doe, 123-123-1234, Home, someInc
John Doe, 123-123-4321, Mobile, someInc
John Doe, 123-456-3214, Work, someInc

现在..我如何通过实际的 SQL 语句本身获得更像这样的结果:
John Doe, 123-123-1234, Home, someInc
123-123-4321, Mobile, someInc
123-456-3214, Work, someInc
Foo Barr, 987-654-3211, Home, anotherInc
[...]

最佳答案

也许你想把 table 弄平:

select n.name,
max(case when p.label = 'home' then p.phonenumber end) as PhoneHome,
max(case when p.label = 'work' then p.phonenumber end) as PhoneWork,
max(case when p.label = 'mobile' then p.phonenumber end) as PhoneMobile
from names n join
phones p
on n.nameid = p.nameid
group by n.name

这会将每种类型的电话号码放在单独的列中。您需要研究所有不同的标签以获得正确的列。

您也可以将所有电话号码放在一个字段中,例如“home:0001112222,work:33344455555:
select n.name,
group_concat(p.tag||':'||p.phonenumber) as AllNumbers
from names n join
phones p
on n.nameid = p.nameid
group by n.name

关于sql - 返回了重复的(ish)行。如何消除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14287477/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com