gpt4 book ai didi

mysql - 更好的 MySQL 查询?

转载 作者:行者123 更新时间:2023-11-29 07:47:35 24 4
gpt4 key购买 nike

这是一个示例,我有一张汽车、用户、成员(member)和经销商表。目前,我正在尝试通过匹配用户 ID 来获取拥有汽车的经销商的名称

Select userid, name FROM `User` WHERE userid IN 
(SELECT userid FROM 'Car' WHERE userid in
(SELECT userid FROM `Member` WHERE userid IN
(SELECT userid FROM `Dealer`)))

这就是我想要的,但我不禁觉得还有更好的方法吗?目前,Car 中的 userid 是 Dealer 中 userid 的 FK,Dealer 中 userid 是 Member 中 userid 的 FK,Member 中 userid 是存储名称的 User 中 userid 的 FK。

我可以直接获取 ID 位于 Car 表中的经销商的所有用户 ID 和名称,同时确保他们实际上是经销商吗?

最佳答案

基本上,您的架构是下游架构

用户 -> 成员(member) -> 经销商 -> 汽车

好消息是您在这里制作了您需要的所有可能的 key 。

因此,要选择任何表中的任何内容,只需从“用户”下游选择您想要的数据即可

    Select * from `USER` u     
where
dealer.user_id = car.user_id and
member.user_id = dealer.user_id and
u.user_id = member.user_id

我之所以在匹配记录方面向上游走,是因为我们希望尽可能少地进行匹配操作。正如您所看到的,user 表应该包含最大记录。因此,我与 car 表进行匹配,并获取 dealer 中匹配的所有 user_id 。同样,我从经销商成员(member),然后到用户。这意味着,如果我从usersmembers再到dealer,用户的所有记录将与更少的记录相匹配。到汽车

但这并不是万无一失的解决方案。这将取决于您的数据。因为可能会出现一个用户可能拥有多辆车的情况,那么最好顺流而下。

关于mysql - 更好的 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27309996/

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