Óla*_*age 1 mysql sql mysql-error-1054
我有这个小的SQL查询.
SELECT a.`id` , a.`title` , a.`date` ,
(
SELECT MAX( grade )
FROM tests
WHERE userid = 41
AND presid = a.`id`
) AS grade
FROM `presentations` a
WHERE a.`visible` = 1
AND `grade` >= 5
ORDER BY `grade` DESC
Run Code Online (Sandbox Code Playgroud)
这给了我错误
1054 - 'where子句'中的未知列'等级'
但如果我删除第二行,它工作正常.我试图做AND a.grade,甚至给测试表一个名字,并将该名称附加到等级,但仍然没有运气.
如何在WHERE子句中使用此内联查询?
我发现这有效,但这是唯一的方法吗?
SELECT a.`id` , a.`title` , a.`date` ,
(
SELECT MAX( grade )
FROM tests
WHERE userid = 41
AND presid = a.`id`
) AS grade
FROM `presentations` a
WHERE a.`visible` = 1
AND (
SELECT MAX( grade )
FROM tests
WHERE userid = 41
AND presid = a.`id`
) >= 5
ORDER BY `grade` DESC
Run Code Online (Sandbox Code Playgroud)
按以下顺序对Sql语句进行了某种程度的评估:
因此,您在SELECT子句中定义的内容在WHERE子句中不可用.您需要将该约束放入HAVING子句中:
SELECT a.`id` , a.`title` , a.`date` ,
(
SELECT MAX( grade )
FROM tests
WHERE userid = 41
AND presid = a.`id`
) AS grade
FROM `presentations` a
WHERE a.`visible` = 1
HAVING `grade` >= 5
ORDER BY `grade` DESC
Run Code Online (Sandbox Code Playgroud)