我正在编写一个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
任何帮助都会受到影响.. :)
提前致谢。
答案 0 :(得分:5)
在您选择的其他列中,您不能使用别名列。您需要一遍又一遍地复制查询的整个部分。即。在初始声明之后用(从bl_transaction_history中选择dDateAdded,其中nPlayerID = nCustomerID)替换所有出现的dat。