MySQL不能在WHERE语句中使用别名?

MySQL不能在WHERE语句中使用别名?,mysql,Mysql,这是我尝试执行的查询。当我接到电话时,问题就出现了 SELECT MIN(deals_bookings.date) as booking_date, `users`.`company_cvrnr`, `users`.`company_debnr`, `refnumbers`.`refno` FROM `refnumbers` JOIN `deals` ON (`refnumbers`.`deal_id` = `deals`.`ID`) JOIN `users` ON (`users`.`id

这是我尝试执行的查询。当我接到电话时,问题就出现了

SELECT MIN(deals_bookings.date) as booking_date, `users`.`company_cvrnr`, `users`.`company_debnr`, `refnumbers`.`refno` 
FROM `refnumbers` 
JOIN `deals` ON (`refnumbers`.`deal_id` = `deals`.`ID`)
JOIN `users` ON (`users`.`id` = `deals`.`partner_id`) 
LEFT JOIN deals_bookings ON (deals_bookings.deal_id = deals.ID)
WHERE `refnumbers`.`is_claimed` = '1'
AND booking_date >= '2013-11-21'
AND `refnumbers`.`claimed_at` BETWEEN '2013-11-26 00:00:00' AND '2013-11-26 23:59:59' 
GROUP by refno
ORDER BY `refnumbers`.`claimed_at` DESC
我得到了错误未知列。我做错了什么


对于MIN(deals\u bookings.date),我试图获取deals\u bookings中的行和“date”列,其中日期最短。

添加一个
having
子句

AND booking_date >= '2013-11-21'
选择MIN(deals\u bookings.date)作为预订日期,`users`.`company\u cvrnr`、`users`.`company\u debnr`、`refnumbers`.`refno` 从'refnumbers'开始 加入(`refnumbers`.`deal\u id`=`deals`.`id`)上的`deals`) 加入(`users`.`id`=`deals`.`partner\u id`)上的`users`) 左键加入交易\预订打开(交易\预订.deal\u id=deals.id) 其中'refnumbers`.'是`='1' 和'refnumbers'。'在'2013-11-26 00:00:00'和'2013-11-26 23:59:59'之间索赔' 按参考号分组 预订日期>='2013-11-21' 按“参考编号”订购。在“描述”处声明 因为
booking\u date
是聚合数据。

试试这个

问题是WHERE子句在SELECT语句之前执行。因此,“预订日期”列还不可用。 HAVING子句在SELECT语句之后执行。它可以在你选择所有内容后过滤出结果

SELECT MIN(deals_bookings.date) as booking_date, `users`.`company_cvrnr`, `users`.`company_debnr`, `refnumbers`.`refno` FROM `refnumbers` JOIN `deals` ON (`refnumbers`.`deal_id` = `deals`.`ID`) JOIN `users` ON (`users`.`id` = `deals`.`partner_id`) LEFT JOIN deals_bookings ON (deals_bookings.deal_id = deals.ID) WHERE `refnumbers`.`is_claimed` = '1' AND `refnumbers`.`claimed_at` BETWEEN '2013-11-26 00:00:00' AND '2013-11-26 23:59:59' GROUP by refno HAVING booking_date >= '2013-11-21' ORDER BY `refnumbers`.`claimed_at` DESC
SELECT MIN(deals_bookings.date) as booking_date, `users`.`company_cvrnr`, `users`.`company_debnr`, `refnumbers`.`refno` 
FROM `refnumbers` 
JOIN `deals` ON (`refnumbers`.`deal_id` = `deals`.`ID`)
JOIN `users` ON (`users`.`id` = `deals`.`partner_id`) 
LEFT JOIN deals_bookings ON (deals_bookings.deal_id = deals.ID)
WHERE `refnumbers`.`is_claimed` = '1'
AND `refnumbers`.`claimed_at` BETWEEN '2013-11-26 00:00:00' AND '2013-11-26 23:59:59' 
GROUP by refno
HAVING MIN(deals_bookings.date) >= '2013-11-21'
ORDER BY `refnumbers`.`claimed_at` DESC