gpt4 book ai didi

sql - 在同一张 table 上的内部查询-有更好的方法吗?

转载 作者:行者123 更新时间:2023-12-03 18:35:31 26 4
gpt4 key购买 nike

我有这两个表(简化版)

命令

owner_id | user_1 | user_2 | amount | order_id
-----------------------------------------------
1 | 2 | 3 | 100 | AAA
1 | 7 | 2 | 200 | BBB
2 | 3 | 5 | 400 | CCC


用户数

user_id | username
------------------
1 | John
2 | Robert
3 | Sally
4 | Mario
5 | Albert
6 | Hernest
7 | Homer


我需要在一个查询中获取与特定订单相关的所有信息,包括 owner_id, user_1, user_2用户名。

我想要达到的结果如下:

owner_id | owner_username | user_1_id | user_1_username | user_2_id | user_2_username | order_total
----------------------------------------------------------------------------------------------------
1 | John | 2 | Robert | 3 | Sally | 100


到目前为止,我得到了这样一个查询所需的一切:

SELECT o.owner_id AS owner_id, (SELECT username FROM Users where user_id = 1) AS owner_username,
o.user_1 AS user_1_id, (SELECT username FROM Users where user_id = 2) AS user_1_username,
o.user_2 AS user_2_id, (SELECT username FROM Users where user_id = 3) AS user_2_username,
o.amount AS order_total
FROM Orders.o
WHERE o.order_id = 'AAA'


这是检索第一订单信息的示例。

我对获取每个用户名所需执行的内部查询不是很满意,我认为这有点丑陋。

有没有更优雅或更高性能的方式来获取用户名?

谢谢

最佳答案

这可能会有所帮助

SELECT od.*,
U1.username AS 'User_1_Name',
U2.username AS 'User_2_Name',
U3.username AS 'User_3_Name'
FROM Orders od
LEFT OUTER JOIN Users U1
ON od.Owner_Id = U1.User_Id
LEFT OUTER JOIN Users U2
ON od.User_1 = U2.User_Id
LEFT OUTER JOIN Users U3
ON od.User_2 = U3.User_Id
WHERE order_id = 'AAA'

关于sql - 在同一张 table 上的内部查询-有更好的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26401766/

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