Php 在条件Mysql中使用时,别名变量不起作用

Php 在条件Mysql中使用时,别名变量不起作用,php,mysql,Php,Mysql,在条件客户端中使用时,别名变量不起作用!=身份证 请帮助解决这个问题。提前感谢。您不能在WHERE子句中引用别名,您必须使用HAVING 不能在同一查询的WHERE子句中引用别名。把它放在HAVING子句中。相反,因为invoice_date在表中,所以可以把日期测试放在WHERE子句中。我看不出这怎么会返回任何东西。子查询返回与id相同的mob_no,然后将其称为client,但WHERE子句表示只返回client与id不相同的行。它们直接相互矛盾。你能发布一些样本数据和预期结果吗?可能的重复

在条件客户端中使用时,别名变量不起作用!=身份证


请帮助解决这个问题。提前感谢。

您不能在WHERE子句中引用别名,您必须使用HAVING


不能在同一查询的WHERE子句中引用别名。把它放在HAVING子句中。相反,因为invoice_date在表中,所以可以把日期测试放在WHERE子句中。我看不出这怎么会返回任何东西。子查询返回与id相同的mob_no,然后将其称为client,但WHERE子句表示只返回client与id不相同的行。它们直接相互矛盾。你能发布一些样本数据和预期结果吗?可能的重复数据会出错吗?你看到我上面的评论了吗?我再问一次,你看到我上面的评论了吗?您正在选择WHERE mob_no=id并将mob_no别名为client,然后您就有了WHERE client!=它不能同时是相等的和不相等的。
select *,str_to_date(invoice_date,'%d/%m/%Y') as date,invoice_to as id, 
    (select mob_no from client_info where mob_no = id ) as client
from client_invoice
where client != id
having str_to_date(invoice_date,'%d/%m/%Y') >= '$fdate'
   and str_to_date(invoice_date,'%d/%m/%Y') <= '$tdate'  
ORDER BY date DESC
SELECT *, str_to_date(invoice_date, '%d/%m/%Y') AS date,
       invoice_to AS id,
       (SELECT mob_no FROM client_info WHERE mob_no = invoice_to) AS client
FROM client_invoice
WHERE STR_TO_DATE(invoice_date, '%d/%m/%Y') BETWEEN '$fdate' AND '$tdate'
HAVING client != id