嗨,我有下图所示的表格结构
mysql - 使用if-else语句的MYSQL查询-LMLPHP
我试图用mysql编写查询来获取
客户表中的名称、地址、单声道或自动售货机取决于transportsticker表中的whoseid值
我试着

 SELECT transportsticker.* ,AA.name,AA.address,AA.mono FROM transportsticker INNER JOIN (case when (transportsticker.whoseid='vendor') then (vendortable) else (customertable) end) AA   ON AA.id=transportsticker.vorcid AND transportsticker.id=1

但它给出了语法错误。
有谁能帮我…?

最佳答案

CASE在sql中是一个表达式,不能像在过程语言中那样用于控制执行流。
您可以将LEFT JOINCOALESCE一起使用:

SELECT t.*,
       COALESCE(c.name, v.name),
       COALESCE(c.address, v.address),
       COALESCE(c.mono, v.mono)
FROM transportsticker AS t
LEFT JOIN customertable AS c
   ON t.whoseid='customer' AND c.id=t.vorcid
LEFT JOIN vendortable AS v
   ON t.whoseid='vendor' AND v.id=t.vorcid
WHERE t.id=1

07-24 09:37