Php Mysql选择case作为WHERE

Php Mysql选择case作为WHERE,php,mysql,Php,Mysql,我们不能这样做吗 SELECT tbl_ads.*, CASE tbl_ads.type WHEN 'private' THEN (select tbl_privatesellers.privateseller_state from tbl_privatesellers where tbl_privatesellers.privateseller_id = tbl_ads.privateseller_id ) WHEN 'dealer' THEN (

我们不能这样做吗

SELECT tbl_ads.*, CASE tbl_ads.type
  WHEN 'private'
       THEN (select tbl_privatesellers.privateseller_state from tbl_privatesellers where     tbl_privatesellers.privateseller_id = tbl_ads.privateseller_id  )
  WHEN 'dealer'
       THEN (select tbl_dealer.state from tbl_dealer where tbl_dealer.id = tbl_ads.privateseller_id )
END AS state 
FROM tbl_ads WHERE ad_status = 1 AND state = 'ACT'

WHERE
子句中看不到它作为未知列状态的给定错误表达式结果,因为在计算行的表达式之前,首先检查它的条件。把它放在像这样的
子句中

...
HAVING state='ACT'

SELECT在WHERE子句之前的末尾求值,
WHERE子句中的条件不能引用SELECT中求值的表达式。
将条件从选择移动(或复制)到位置。

SELECT ..........
FROM tbl_ads 
WHERE ad_status = 1 
  AND  'ACT'  =  
     CASE tbl_ads.type
       WHEN 'private'
       THEN (select tbl_privatesellers.privateseller_state 
             from tbl_privatesellers 
             where     tbl_privatesellers.privateseller_id = tbl_ads.privateseller_id  )
       WHEN 'dealer'
       THEN (select tbl_dealer.state 
             from tbl_dealer 
             where tbl_dealer.id = tbl_ads.privateseller_id )
     END

显然,在表
tbl_ads
中没有列
state
。是的,我没有,但是state是由case end创建的,作为state加上phpmyadmin中显示的mysql结果,我如何在where条件下使用该状态??在
having
子句中应该使用表达式别名,不在
中,其中
。向我们显示完整的错误消息。相关的表模式也会很有用。