gpt4 book ai didi

mysql - 在第二个表MYSQL中按多行过滤数据

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

我有 2 个表。用户和 users_meta。我希望查询返回所有具有 sexe=M 和 user_att1=1 的用户(应该只返回 mathew),但我还需要能够按其他属性进行过滤。

users 表是这样组织的:

ID  | Firstname | Lastname  | Sexe     etc.
1 Mathew Perkins M
2 Andrea Smith F
3 Andrew Story M

users_meta 表是这样组织的:

ID  | user_id |  meta_key   | meta_value 
1 | 1 | user_att1 | 1
2 | 1 | user_att2 | 0
3 | 2 | user_att1 | 0
4 | 2 | user_att2 | 1
5 | 3 | user_att1 | 0
6 | 3 | user_att2 | 1

我尝试使用 group_concatconcat 但无法获得所需的结果。

这是我当前的查询,它提供了所需的输出,但如果有意义的话,我不会按属性进行过滤。

SELECT 
users.id,users.firstname,
users.lastname,
concat(users_meta.meta_value) as 'user_att1'
FROM users
LEFT JOIN users_meta ON users.id=users_meta.user_id
WHERE users_meta.meta_key='user_att1'
GROUP BY users.id
ORDER BY ID DESC
LIMIT 0, 20

感谢您的帮助或为我指明正确的方向

最佳答案

鉴于您的用例,我会使用条件聚合:

SELECT u.id, u.firstname, u.lastname
FROM users u
INNER JOIN users_meta um ON um.user_id = u.id
WHERE u.sexe = 'M'
GROUP BY u.id, u.firstname, u.lastname
HAVING MAX(um.meta_key = 'user_att1' AND um.meta_value = 1) > 0
ORDER BY u.id DESC
LIMIT 0, 20

这项技术的好处在于,您只需在 HAVING 子句中添加更多条件即可在 users_meta.meta_key 上添加更多条件。

关于mysql - 在第二个表MYSQL中按多行过滤数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55211824/

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