gpt4 book ai didi

mysql - SELECT JOIN WHERE 查询的最佳实践

转载 作者:行者123 更新时间:2023-11-29 14:20:51 24 4
gpt4 key购买 nike

我有 2 张 table ,第一个名为 friendship,第二个名为 user,详细信息如下

友谊表字段:

uid1, uid2

用户表字段:

uid, username, primary_email, f_name, m_name, l_name, avatar, avatar_path

想法是当friendship表上的uid1时从user表中获取所有 friend 的详细信息,例如=1以下查询是最好的实践这个想法?

SELECT 
u.uid,
u.username,
u.primary_email,
u.f_name,
u.m_name,
u.l_name,
u.avatar,
u.avatar_path
FROM friendship AS f
LEFT JOIN user AS u ON f.uid2=u.uid
WHERE f.uid1=1

最佳实践是使用 join 进行单个查询还是使用 2 个查询,第一个查询从友谊表中提取 id,第二个查询从用户表中提取每个 id 的详细信息,例如:-

SELECT uid2 from friendship WHERE uid1 =1

这个查询给了我 ids 2,4,6,5,9 的数组,然后我在下面的查询中使用它

SELECT * from user WHERE uid IN (2,4,6,5,9)

最佳实践是什么?

最佳答案

此查询将为您提供主要人物的姓名及其 friend 的姓名:

create table users
(
uid int,
username varchar(10),
fname varchar(10)
)

insert into users values(1, 'test', 'Jim')
insert into users values(2, 'blah', 'Tim')
insert into users values(3, 'xxx', 'Henry')
insert into users values(4, 'nada', 'Bob')

create table friendship
(
uid1 int,
uid2 int
)

insert into friendship values (1, 2)
insert into friendship values (1, 3)
insert into friendship values (2, 3)
insert into friendship values (3, 4)

select u2.uid personid
, u2.fname personname
, f.uid2 friendid
, u1.username friendusername
, u1.fname friendname
from users u1
inner join friendship f
on u1.uid = f.uid2
left join users u2
on f.uid1 = u2.uid

结果:

enter image description here

关于mysql - SELECT JOIN WHERE 查询的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11781334/

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