哪里有问题? 选择工作正常..当检查在哪里 - 给出错误 'where子句'中的未知列'确认'
SELECT
users_id, MD5(CONCAT(users_pass, users_email)) AS confirm
FROM
(users_items)
WHERE users_active = 0
AND confirm = '39a5eccb97f63a2bb649ddd95c5a3ba7'
LIMIT 1
答案 0 :(得分:7)
因为确认是alias
。
您无法在相同级别的查询的alias
子句中使用where
。
你必须做
where xxx
and MD5(CONCAT(users_pass, users_email)) = '39a5eccb97f63a2bb649ddd95c5a3ba7'
或者,如Vatev所述,您可以在HAVING
子句中使用别名。但使用HAVING
子句可能会对性能产生影响。
导致查询过滤器(例如,尝试使用索引)和HAVING子句过滤这些过滤数据的原因。
where xxx
HAVING confirm = '39a5eccb97f63a2bb649ddd95c5a3ba7'
答案 1 :(得分:0)
SELECT
users_id,
MD5(CONCAT(users_pass, users_email)) AS confirm
FROM
(users_items)
WHERE
users_active = 0
AND MD5(CONCAT(users_pass, users_email)) = '39a5eccb97f63a2bb649ddd95c5a3ba7'
LIMIT 1
对于HAVING子句,AFAIK,它仅与GROUP BY一起使用。
添加了:
“通常,使用的子句必须完全按照语法描述中显示的顺序给出。例如,HAVING子句必须在任何GROUP BY子句之后和任何ORDER BY子句之前。”
“不要对应该在WHERE子句中的项目使用HAVING。例如,不要写下以下内容:
SELECT col_name FROM tbl_name HAVING col_name > 0;
改为写下:
SELECT col_name FROM tbl_name WHERE col_name > 0;"