[英]How to give CASE WHEN THEN in mysql where clause based on select columns?
[英]Mysql select case as WHERE
我们不能这样做吗?
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
子句中
...
HAVING state='ACT'
SELECT在WHERE子句的末尾求值,
WHERE子句中的条件不能引用SELECT中计算的表达式。
将条件从SELECT移动(或复制)到WHERE。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.