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
子句中应该使用表达式别名,不在中,其中
。向我们显示完整的错误消息。相关的表模式也会很有用。