gpt4 book ai didi

mysql - MySql 中复杂的一对多查询

转载 作者:行者123 更新时间:2023-11-29 00:59:23 25 4
gpt4 key购买 nike

我已经搜索过,但无法将问题压缩到足以找到相关答案的程度。我的经验告诉我这可能是设计问题...

current_status
id
user_id
status_id
created

users
user_id
other...

current_status 主要用于审计目的。每次用户状态发生变化时,都会在 current_status 中插入一条新记录。一些状态示例是“工作”、“解雇”、“已申请”、“裁员”等。

查询 - 我只想返回每个用户的最新状态以及用户详细信息...

SELECT users.*, current_status.status_id AS status 
FROM users
JOIN current_status ON users.user_id = current_status.user_id
WHERE users.user_id = '1'

如何让查询返回用户的最新 status_id?

ORDER BY current_status.created DESC LIMIT 0,1

但是,这真的是正确的方法吗,因为如果我想返回多个用户怎么办?

如有任何帮助,我们将不胜感激。

最佳答案

编辑 我想我现在掌握了您的表/列...

SELECT    users.*,
(SELECT current_status.status_id
FROM current_status
WHERE current_status.user_id = users.user_id
ORDER BY current_status.created DESC
LIMIT 1) AS status
FROM users
WHERE users.user_id = '1'

EDITv2 此外,如果您想加入表以便稍后保存自己的查询,您可以使用:

SELECT    users.*, current_status.*
FROM users
LEFT JOIN current_status
ON current_status.status_id = (
SELECT current_status.status_id
FROM current_status
WHERE current_status.user_id = users.user_id
ORDER BY current_status.created DESC
LIMIT 1
)
WHERE users.user_id = '1'

关于mysql - MySql 中复杂的一对多查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4379795/

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