我在MariaDB中创建了一个视图,但我无法在几个字段中使用它。目前这是有效的:
( SELECT DISTINCT IFNULL(grades.`grade`,'No Grade')
FROM `table` grades
WHERE userinfo.`id` = grades.`id`
AND grades.`Item Name` = 'SOMEINFO'
) 'SOMENAME',
但我需要添加一个选择,其中没有等级'是,采用以下形式
( SELECT DISTINCT IFNULL( grades.`grade`,
SELECT IF( EXISTS
( SELECT *
FROM `another_table`
WHERE userid = 365
AND courseid = 2
), 'Enrolled', 'Not enrolled'
)
)
FROM `table` grades
WHERE userinfo.`id` = grades.`id`
AND grades.`Item Name` = 'SOMEINFO'
) 'SOMENAME',
我知道
SELECT IF( EXISTS( SELECT *
FROM `another_table`
WHERE userid = 365
AND courseid = 2
),
'Enrolled', 'Not enrolled'
)
也在努力,但现在整个事情都给了我一个错误,所以任何建议都会非常感激
由于
答案 0 :(得分:0)
这看起来像子查询:
(SELECT DISTINCT IFNULL(grades.`grade`,
SELECT IF( EXISTS (SELECT *
FROM `another_table`
WHERE userid = 365 AND courseid = 2
), 'Enrolled', 'Not enrolled'
)
)
FROM `table` grades
WHERE userinfo.`id` = grades.`id` AND
grades.`Item Name` = 'SOMEINFO'
) as SOMENAME,
您正在使用一个子查询,该子查询在需要标量子查询的位置返回两列。标量子查询最多返回一行中的一列。
不幸的是,由于视图的限制,没有简单的方法可以在MySQL中执行您想要的操作。我建议你重写逻辑,以便使用exists
子句中的left join
来处理from
。