别名不在MYSQL中处理IF条件

时间:2012-05-05 14:13:36

标签: mysql alias mysql-error-1064

我正在编写一个mysql查询并收到错误。

  

“字段列表'中的未知列'dat'”

由于在mysql中使用IF条件中的别名而发生此错误。

这是mysql查询:

SELECT 
    nCustomerID,
    dDateRegistered,
    (select count(nPlayerID) from credit_logs 
        where nPlayerID=nCustomerID) as total_clog,
    (select count(nPlayerID) FROM bl_transaction_history
        where nPlayerID=nCustomerID) as total_tran,
    (select count(nCustomerID) from customer_freeplays
        where nCustomerID=nCustomerID) as total_free,
    (select dDateAdded from bl_transaction_history
        where nPlayerID=nCustomerID) as dat,
    (select DATEDIFF(now(),dat)/30 ) as date_differece1,
    (select DATEDIFF(now(),dDateRegistered)/30 ) as date_difference2,
    IF (dat IS NOT NULL,(select DATEDIFF(now(),dat)/30 ),
        (select DATEDIFF(now(),dDateRegistered)/30 )) as date_difference
FROM bl_customers
WHERE nAccountStatus=1 
  and bDeleted=0 
having total_clog>0 
    or total_tran>0 
    or total_free>0

任何帮助都会受到影响.. :)

提前致谢。

1 个答案:

答案 0 :(得分:5)

在您选择的其他列中,您不能使用别名列。您需要一遍又一遍地复制查询的整个部分。即。在初始声明之后用(从bl_transaction_history中选择dDateAdded,其中nPlayerID = nCustomerID)替换所有出现的dat。