3

我正在编写一个 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

任何帮助都会得到帮助.. :)

提前致谢。

4

1 回答 1

6

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

于 2012-05-05T14:22:15.297 回答