gpt4 book ai didi

MYSQL如何检索两个外键的相关值

转载 作者:行者123 更新时间:2023-11-29 12:02:18 25 4
gpt4 key购买 nike

我有一个用户主表,其基本结构如下

用户

<小时/>

用户 ID |用户名 |用户加入

<小时/>

159 |亚历克斯 | 2015-08-23

160 |史蒂夫| 2015-08-23

161 |洛基 | 2015-08-23

用户交易表如下。这里 user1 和 user2 是 users 表的外键。

用户交易

<小时/>

用户1 |用户2 |交易

<小时/>

159 | 160 | 160 3

159 | 161 | 161 2

160 | 159 | 159 2

160 | 161 | 161 2

161 | 159 | 159 2

161 | 160 | 160 2

我想按如下方式检索上述交易:

用户1Id |用户名 |用户2Id |用户名 |交易

<小时/>

159 |亚历克斯 | 160 | 160史蒂夫| 3

此外,是否可以进一步缩小范围至彼此执行相同交易的两个用户。比如160和161都完成了交易2。

我假设这对于拥有大量用户的服务器来说将是相当资源密集型的。请提出建议。

最佳答案

只需连接 2 个表:

SELECT
u1.userId as user1Id,
u1.userName as user1Name,
u2.userId as user2Id,
u2.userName as user2Name,
ut.transaction
FROM
UserTransactions ut
INNER JOIN Users u1 ON (ut.user1 = u1.userId)
INNER JOIN Users u2 ON (ut.user2 = u2.userId)

SQL JOIN 子句用于根据两个或多个表之间的公共(public)字段组合来自两个或多个表的行。

最常见的联接类型是 SQL INNER JOIN。 SQL INNER JOIN 返回多个表中满足连接条件的所有行。

UserTransactions 表中的

user1 列引用 Users 表中的 userIdUserTransactions 表中的 user2 列引用 Users 表中的 userId。因此,我们必须将 UserTransactionsUsers 表连接两次。

关于MYSQL如何检索两个外键的相关值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32170464/

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