首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用if-else语句的MYSQL查询

问使用if-else语句的MYSQL查询
EN

Stack Overflow用户
提问于 2016-06-13 11:12:49
回答 2查看 63关注 0票数 3

嗨,我的表结构如图所示。

​

​

我试图用mysql编写查询以获取

名称、地址、来自客户表或供应商表的单值取决于运输标签表中的值。

我试过

代码语言:javascript
复制
 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

但是它产生了语法错误。有人能帮我吗.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-13 11:19:51

SQL中的CASE是一个表达式,不能像在过程语言中那样用于控制执行流。

您可以将LEFT JOIN与COALESCE一起使用:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2016-06-13 11:26:00

试试这样的东西。

代码语言:javascript
复制
SELECT name, address, mono FROM TransportSticker, CustomerTable, VendorTable WHERE (TransportSticker.whoseid = 'vendor' AND VendorTable.id = TransportSticker.vorcid) OR (TransportSticker.whoseid = 'customer' AND CustomerTable.id = TransportSticker.vorcid)

这将从表VendorTable和CustomerTable中选择对应的条目到TransportSticker中的条目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37788304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档