gpt4 book ai didi

mysql - 查找连接对

转载 作者:行者123 更新时间:2023-11-30 21:26:29 24 4
gpt4 key购买 nike

假设我们在 mySQL 数据库中有一个表,其中 fname 与另一个 fname(BB_Connection_name) 有一个连接,我们希望有一个查询来查找在他们之间找到连接的 friend 对。

例如Sidharth 和 Asim 都有彼此的 BBid 和 BB_Connection_ID

enter image description here

我曾寻找过类似的父亲、儿子和孙子问题的案例,但并不是每个父亲都有儿子,因此将他们内部结合起来会使事情更容易解决。我尝试使用它,但没有用。

这里我需要检查每个 fname(A) 的 BB_Connection_ID,然后相应的 fname 是否有 A 的 BBid 作为他的 BB_Connection_ID。

将被选中的对应该像 Sidharth<->Asim我们需要找到彼此具有连接 ID 的对。

============================================= ===========================

Code for recreation of the table:
-----------------------------------------------------------------------------
create table world.bigbb(
BBid int not null auto_increment,
fname varchar(20) NOT NULL,
lname varchar(30),
BBdays int not null,
No_of_Nom int,
BB_rank int not null,
BB_Task varchar(10),
BB_Connection_ID int,
BB_Connection_name varchar(10),
primary key (BBid)
);


insert into world.bigbb (fname, lname, BBdays, No_of_Nom, BB_rank, BB_Task, BB_Connection_ID, BB_Connection_name)
values
('Sidharth', 'Shukla', 40, 4, 2, 'Kitchen', 11, 'Asim'),
('Arhaan', 'Khan', 7, 1, 9, 'Kitchen', 16, 'Rashmi'),
('Vikas', 'Bhau', 7, 1, 8, 'Bedroom', 11, 'Asim'),
('Khesari', 'Bihari', 7, 1, 12, 'Kitchen', 9, 'Paras'),
('Tehseem', 'Poonawala', 7, 1, 11, 'Washroom', 12, 'Khesari'),
('Shehnaaz', 'Gill', 40, 4, 4, 'Washroom', 9, 'Paras'),
('Himanshi', 'Khurana', 7, 0, 7, 'Bedroom', 8, 'Shefali'),
('Shefali', 'Zariwala', 7, 1, 10, 'Bedroom', 1, 'Sidharth'),
('Paras', 'Chabra', 40, 3, 1, 'Bathroom', 10, 'Mahira'),
('Mahira', 'Sharma', 40, 4, 5, 'Kitchen', 9, 'Paras'),
('Asim', 'Khan', 40, 3, 3, 'Bathroom', 1, 'Sidharth'),
('Arti', 'Singh', 40, 5, 6, 'Captain', 1, 'Sidharth'),
('Sidharth', 'Dey', 35, 6, 16, 'None', 14, 'Shefali'),
('Shefali', 'Bagga', 38, 5, 15, 'None', 13, 'Sidharth'),
('Abu', 'Fifi', 22, 5, 17, 'None', 11, 'Asim'),
('Rashmi', 'Desai', 38, 5, 13, 'None', 17, 'Debolina'),
('Debolina', 'Bhattacharjee', 38, 5, 14, 'None', 16, 'Rashmi');

最佳答案

一个解决方案是自连接表:

select
b1.fname name1,
b2.fname name2
from bigbb b1
inner join bigbb b2
on b1.BB_Connection_ID = b2.BBid
and b2.BB_Connection_ID = b1.BBid
and b1.BBid < b2.BBid

这将为您提供每对记录,第一列中具有最小 BBid 的记录。

这个 demo on DB Fiddle 您的示例数据返回:

name1    | name2   :------- | :-------Sidharth | Asim    Paras    | Mahira  Sidharth | Shefali Rashmi   | Debolina

关于mysql - 查找连接对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58720918/

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