Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在where子句中使用带大小写的别名列名_Mysql_Sql - Fatal编程技术网

Mysql 在where子句中使用带大小写的别名列名

Mysql 在where子句中使用带大小写的别名列名,mysql,sql,Mysql,Sql,如何修复此查询?我收到以下错误信息: “where子句”中的未知列“已确认记录的计数” MySQL查询: SELECT (SELECT COUNT(a.col_1)FROM table_1 a JOIN table 2 b ON a.col_id= b.col_id) count_of_confirmed_rec, c.col_1, FROM table_3 c LEFT JOIN table_4 d ON c.col_id = d.col_id WHERE d.col_1 = 'value

如何修复此查询?我收到以下错误信息:

“where子句”中的未知列“已确认记录的计数”

MySQL查询:

SELECT 
(SELECT COUNT(a.col_1)FROM table_1 a
JOIN table 2 b ON a.col_id= b.col_id) count_of_confirmed_rec,
c.col_1,
FROM table_3 c
LEFT JOIN table_4 d ON c.col_id = d.col_id 
WHERE d.col_1 = 'value'
AND c.col_1 = CASE count_of_confirmed_rec
WHEN 0 THEN 0 ELSE 1 END

首先,用于计算已确认记录的计数的子查询与外部查询不相关;因此,它将为查询的所有返回行提供相同的值。不确定这是否是你想要的

其次,您的条件
d.col_1='value'
对于左连接来说也可能放错了位置

要测试where语句中的
count\u of\u confirm\u rec
值,需要将where语句之外的所有内容都放在子查询中,并对查询返回的行应用条件(未测试):


您不能在WHERE子句的SELECT fields部分中使用别名这里更好的方法是将没有
case
条件的所有数据转储到临时表中,并使用
case
条件在simple
SELECT
中获取记录。除了使用临时表,没有其他方法修复查询对吗?
select count_of_confirmed_rec, c_col_1 from (
SELECT (SELECT COUNT(a.col_1)FROM table_1 a JOIN table 2 b ON a.col_id= b.col_id) count_of_confirmed_rec, c.col_1 as c_col_1
FROM table_3 c LEFT JOIN table_4 d ON c.col_id = d.col_id 
WHERE d.col_1 = 'value'
) SQ
where c_col_1 = CASE count_of_confirmed_rec WHEN 0 THEN 0 ELSE 1 END