繁体   English   中英

MySQL选择大小写为WHERE

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM