gpt4 book ai didi

php - Mysql - 连接2个带有限制的查询

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

我不太熟悉在查询中使用“join”。我确实尝试过自己解决这个问题,但似乎太难了。

我有 2 张 table :

Table 'users':
+-----------------+-----------------+
| member | online |
+-----------------+-----------------+
| mahran | 1 |
| peter | 1 |
| Jen | 1 |
| Steve | 0 |
+-----------------+-----------------+

Table 'tickets'
+-----------------+----------------+----------------+
| name | category | time |
+-----------------+----------------+----------------+
| mahran | silver | 1 |
| peter | blue | 1 |
| mahran | blue | 2 |
| peter | red | 3 |
| peter | green | 2 |
| Jen | silver | 1 |
+-----------------+----------------+----------------+

挑战:
我需要每个在线的成员(users.member)(users.online)。接下来是获取时间最长的每个成员 (user.member = Tickets.name) 的类别(可能是 ORDER BY time DESC LIMIT 1)。

例如:彼得在线。 Peters最高时间是3,在category=red的位置。所以我希望彼得以他的类别“红色”出现在结果中。马兰会以蓝色出现。珍将获得银牌。史蒂夫会被排除在外,因为他不在线。

我希望这是清楚的。一般来说,我知道查询会是什么样子,但我没有机会将它们合并在一起。

需要合并的内容:

SELECT member FROM users WHERE online = 1;
|
v for each member
SELECT category FROM tickets WHERE name=users.member ORDER BY time DESC.

那么,有什么想法可以解决这个问题吗?

这是一个无法正常工作的查询的 fiddle :Click

最佳答案

您可以使用相关子查询轻松完成此操作:

select u.member,
(select t.category
from tickets t
where t.name = u.member
order by t.time desc
limit 1
) as MostRecentCategory
from users u
where u.online = 1;

这可以利用以下索引:users(online, member)ticket(member, time, Category)

关于php - Mysql - 连接2个带有限制的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25641992/

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