gpt4 book ai didi

MySQL: bool 查询返回 true 如果用户没有设置 dnd 或者如果用户设置了 dnd 给定的 ID 必须是 friend

转载 作者:搜寻专家 更新时间:2023-10-30 22:35:27 24 4
gpt4 key购买 nike

我有这些简单的表格:

1. USER_DND
╔════════╦══════╗
║ UserID ║ DnD ║
╠════════╬══════╣
╚════════╩══════╝

2. USER_FRIEND
╔════════╦══════════╗
║ UserID ║ FriendID ║
╠════════╬══════════╣
╚════════╩══════════╝

USER_DND:它包含用户的 ID 和他们的请勿打扰 (Dnd) 标志。 UserID 是整数,是主键。 DnD 是 bool 值。

USER_FRIEND:包含用户好友的ID。 UserIDFriendID 都是整数。

问题:

对于给定的 UserIDFriendID 我想编写一个单个 查询返回 bool 值(SELECT CASE WHEN EXISTS ) 在任一情况下返回 true:

如果给定的 UserID 在 USER_DND 中将 DnD 设置为 false

如果给定的 UserID 在 USER_DND 中将 DnD 设置为真,并且给定的 FriendID 存在于 USER_FRIEND 中,该 UserID

附加:

这两个是行数较多的表。查询需要非常快。所以我不喜欢使用 OR in where clause of queryquery having subqueries .两者都有严重的性能损失。

最佳答案

您可以尝试使用 LEFT JOIN :

SELECT MAX(CASE WHEN ud.dnd = 'FALSE' THEN 'TRUE'
WHEN uf.FriendID = YourGivenFriendID THEN 'TRUE'
ELSE 'FALSE'
END) as user_ind
FROM USER_DND ud
LEFT JOIN USER_FRIEND uf
ON(ud.userID = uf.userID)
WHERE uf.userID = YourGivenID

我假设每个用户可以有多个 friend ,因此 MAX() ,如果它是 1-1 ,你可以删除 MAX()

关于MySQL: bool 查询返回 true 如果用户没有设置 dnd 或者如果用户设置了 dnd 给定的 ID 必须是 friend ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38036280/

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