gpt4 book ai didi

避免循环或游标获取记录的 SQL 查询

转载 作者:行者123 更新时间:2023-12-04 05:33:14 25 4
gpt4 key购买 nike

我有 3 个表如下

Table #1 has column UserId and UserName

Table #2 has column MenuId and MenuName

Table #3 has column MappingId, UserId, MenuId

(在表 #3 列中 UserId 和 MenuId 分别与表 #1 userId 和 Table #2 MenuId 具有外键关系。)

我想要像这样的选择语句
UserName, MenuName, AllowedDisallowedFlag

Where

UserName is Names of User From Table #1

MenuName is Names of Menu from Table #2

AllowedDisallowedFlag如果表 #3 中存在 UserName 和 MenuName 组合,则为真,否则为假。

有没有办法在不使用 Cursors 或循环的情况下实现这一目标?

最佳答案

你需要这样的东西:

SELECT DISTINCT
UserName,
MenuName,
CASE WHEN Table3.UserID IS NULL THEN 0 ELSE 1 END AS Allowed
FROM Table1
CROSS JOIN Table2
LEFT JOIN Table3 ON Table1.UserID = Table3.userID
AND Table3.MenuID = Table2.MenuID

这是一个 SQL Fiddle

关于避免循环或游标获取记录的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12316495/

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