gpt4 book ai didi

SQL 存储查询 - 根据记录的存在使用查询结果作为 bool 值

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

现在刚刚进入 SQL 存储查询...无论如何,这是我的数据库架构(为了您的方便而简化):

成员(member)
------
id INT PK


------
id INT PK

官员
------
id INT PK

如果您热衷于 OOP,那么官员继承董事会继承成员。换句话说,如果某人列在 officer 表中,那么他/她也会列在 board 表和 member 表中。我想找出某人拥有的最高权限级别。到目前为止我的 SP 看起来像这样:

DELIMITER //
CREATE PROCEDURE GetAuthLevel(IN targetID MEDIUMINT)
BEGIN
IF
SELECT `id`
FROM `member`
WHERE `id` = targetID;
THEN
IF
SELECT `id`
FROM `board`
WHERE `id` = targetID;
THEN
IF
SELECT `id`
FROM `officer`
WHERE `id` = targetID;
THEN
RETURN 3; /*officer*/
ELSE
RETURN 2; /*board member*/
ELSE
RETURN 1; /*general member*/
ELSE
RETURN 0; /*not a member*/
END //

DELIMITER ;

错误的确切文本是#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解使用近的正确语法

    'SELECT id
FROM member
WHERE id = targetID;
THEN
IF
SEL' at line 4

我怀疑问题出在 IF block 的参数中。我想要做的是,如果结果集至少为一个,即在表中找到了 id,则返回 true

你们中有人看到这里有什么可做的吗,或者我应该重新考虑我的数据库设计:?


------
id INT PK
级别 SMALLINT

最佳答案

CREATE PROCEDURE GetAuthLevel(IN targetID MEDIUMINT)
BEGIN

DECLARE var INT;

SELECT `id` INTO var
FROM `member`
WHERE `id` = targetID;

IF var IS NOT NULL THEN
...

关于SQL 存储查询 - 根据记录的存在使用查询结果作为 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2570093/

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