gpt4 book ai didi

mysql - 多个并且在 INNER JOIN 上?

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

我有一个这样的查询:

SELECT Email 
FROM minisecurity.my_aspnet_membership m
INNER JOIN minisecurity.my_aspnet_details t ON t.id = m.userId
INNER JOIN minisecurity.my_aspnet_usersinroles r ON m.userId = r.userId and r.roleId = '7'
WHERE t.customerid = '2'

在我的第二个 INNER JOIN 中,我想进行过滤,以便得到 roleId 为 6 或 7 的结果。

我都尝试了

INNER JOIN minisecurity.my_aspnet_usersinroles r
ON m.userId = r.userId and r.roleId = '7' and r.roleId = '6'

INNER JOIN minisecurity.my_aspnet_usersinroles r 
ON m.userId = r.userId and r.roleId = '7' or r.roleId = '6'

但两者都返回错误的结果。

如何正确完成此操作?

最佳答案

检查下面的查询-

SELECT Email 
FROM minisecurity.my_aspnet_membership m
INNER JOIN minisecurity.my_aspnet_details t ON t.id = m.userId
INNER JOIN minisecurity.my_aspnet_usersinroles r ON m.userId = r.userId
WHERE t.customerid = 2 and r.roleId in (6,7);

您也可以使用 OR,但 in 比 OR 更优化-

SELECT Email 
FROM minisecurity.my_aspnet_membership m
INNER JOIN minisecurity.my_aspnet_details t ON t.id = m.userId
INNER JOIN minisecurity.my_aspnet_usersinroles r ON m.userId = r.userId
WHERE t.customerid = 2 and (r.roleId=6 OR r.roleId=7);

注意:由于您使用的是内连接,因此您可以在 on 子句或 in where 子句中使用附加条件。

感谢@strawberry 进行编辑以使答案更好。

@Andy:草莓在考虑到这些字段是整数类型而不是 char/varchar 类型后删除了 '',但如果任何字段不是整数则必须使用 ''。

关于mysql - 多个并且在 INNER JOIN 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36280262/

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