Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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 SQL错误(having子句中的未知列)。_Mysql_Sql - Fatal编程技术网

Mysql SQL错误(having子句中的未知列)。

Mysql SQL错误(having子句中的未知列)。,mysql,sql,Mysql,Sql,上面的查询不起作用。我试图做到这一点:从某种意义上说 [SQL]SELECT vlog.lead_id, vlog.phone_number FROM vicidial_log as vlog GROUP BY vlog.lead_id HAVING( CASE WHEN vlog.status = 'NA' THEN 1 WHEN vlog.status = 'ADC' THEN 1 END ) = COUNT(*) [Err] 1054 - Unknown column 'vlog.

上面的查询不起作用。我试图做到这一点:从某种意义上说

[SQL]SELECT
vlog.lead_id, vlog.phone_number
FROM
vicidial_log as vlog
GROUP BY vlog.lead_id
HAVING(
CASE 
WHEN vlog.status = 'NA' THEN 1 
WHEN vlog.status = 'ADC' THEN 1 
END
) = COUNT(*)

[Err] 1054 - Unknown column 'vlog.status' in 'having clause'
这是可行的,但它没有给我想要的结果

status=可以是任何东西 潜在客户id=不唯一 电话号码=不唯一

我正在尝试查找状态至少为

 [SQL]SELECT
    vlog.lead_id, vlog.phone_number, vlog.status
    FROM
    vicidial_log as vlog
    GROUP BY vlog.lead_id
    HAVING(
    CASE 
    WHEN vlog.status = 'NA' THEN 1 
    WHEN vlog.status = 'ADC' THEN 1 
    END
    ) = COUNT(*)

任何其他组合都不应返回电话号码。

这似乎可以:

ADC
NA
OR BOTH ADC AND NA

但是,您是否需要在
lead\u id
phone\u number
上进行比较还不是100%清楚。

这似乎是可行的:

ADC
NA
OR BOTH ADC AND NA

但是,您是否需要在
lead\u id
phone\u number
上进行比较还不是100%清楚。

这是在黑暗中拍摄的,但可能对您有用。将您的
HAVING
子句更改为:

SELECT DISTINCT lead_id, phone_number
FROM vicidial_log vlog
WHERE status IN ('NA', 'ADC')
AND NOT EXISTS (SELECT *
                FROM vicidial_log vlog2
                WHERE status NOT IN ('NA','ADC')
                AND vlog.lead_id = vlog2.lead_id
                AND vlog.phone_number = vlog2.phone_number)

这是在黑暗中拍摄的,但也许对你有用。将您的
HAVING
子句更改为:

SELECT DISTINCT lead_id, phone_number
FROM vicidial_log vlog
WHERE status IN ('NA', 'ADC')
AND NOT EXISTS (SELECT *
                FROM vicidial_log vlog2
                WHERE status NOT IN ('NA','ADC')
                AND vlog.lead_id = vlog2.lead_id
                AND vlog.phone_number = vlog2.phone_number)

DB fiddle中的数据与您正在谈论的内容不一致……您在
having
子句中遗漏了
count
聚合
mysql
在第二个示例中允许使用此语法,但可能返回误导性结果。应该是
having count(case…
)。DB fiddle中的数据与您正在谈论的内容不一致…您遗漏了
having
子句中的
count
聚合。
mysql
在第二个示例中允许使用此语法,但可能返回误导性结果。应该是
having count(案例…
。根据他的描述,这是正确的答案,如果lead\u id同时具有
ADC
NA
并且没有其他状态,则
count(*)
将为2和
sum(…)
如果
lead\u id
只有一个状态,即
ADC
NA
计数和总和将为1,再次满足标准,则返回2个相同的goes(如果
lead\u id
只有一个状态,则计数和总和将为1,这同样符合标准我如何实现查询,以便至少存在10条记录取决于您拥有的数据:)根据他的描述,这是正确答案,如果lead_id同时具有
ADC
NA
,并且没有其他状态,则
count(*)
将为2和
sum(…)
如果
lead\u id
只有一个状态,即
ADC
NA
计数和总和将为1,再次满足标准,则返回2个相同的goes(如果
lead\u id
只有一个状态,则计数和总和将为1,这同样符合标准我如何实现查询,以便至少存在10条记录取决于您拥有的数据:)