首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中使用IF/CASE条件条件

在SQL中使用IF/CASE条件条件
EN

Stack Overflow用户
提问于 2015-02-19 00:30:51
回答 3查看 502关注 0票数 3

关于在SQL中如何使用IF语句,我有一个问题,所以我有3个表。

  • 用户
  • 力学
  • 交换

每个表中的字段如下

代码语言:javascript
复制
 user        mechanics      exchanges
------      ----------      ---------
name         name           id_user
id_user      id_mecha       id_mecha 
                            message

我想使用如下条件,如果usermechanicid与每个idid匹配(usermechanic),则将选择它们的名称和相应的message

代码语言:javascript
复制
SELECT CASE  
         WHEN mechanics.id_mecha = exchanges.id_mecha  
            THEN  mechanics.name, exchanges.message
         WHEN users.id_user = exchanges.id_user 
            THEN users.name, exchanges.message
FROM users 
JOIN mechanics 
JOIN exchanges
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-19 01:07:29

JOIN将在机械和用户之间产生一个完整的交叉产品。这可能不是你想要的。您应该对每个表使用单个联接,然后将它们与UNION组合起来。

代码语言:javascript
复制
SELECT m.name, e.message
FROM mechanics AS m
JOIN exchanges AS e ON m.id_mecha = e.id_mecha

UNION

SELECT u.name, e.message
FROM users AS u
JOIN exchanges AS e ON m.id_user = e.id_user
票数 4
EN

Stack Overflow用户

发布于 2015-02-19 00:44:28

如果我正确理解,您需要在END中使用案例 in SELECT,并且需要为JOIN提供如下所示的ON

代码语言:javascript
复制
SELECT CASE  
         WHEN mechanics.id_mecha = exchanges.id_mecha  THEN  mechanics.name
         WHEN users.id_user = exchanges.id_user THEN users.name 
       END,
       exchanges.message
FROM  users u
JOIN mechanics m ON users.id_user = exchanges.id_user
JOIN exchanges e ON mechanics.id_mecha = exchanges.id_mecha
票数 0
EN

Stack Overflow用户

发布于 2015-02-19 00:53:00

实际上,您需要一个带有JOINcase语句的消息(假设一个特定的消息只能针对一个用户或一个特定的机械师-而不是同时在一行中同时使用):

代码语言:javascript
复制
SELECT case 
       when e.id_user is null then m.name
       when e.id_mecha is null then u.name
       else null end,
       e.message
from exchanges e join users u on e.id_user=u.id_user
     join mechanics m on e.id_mecha=m.id_mecha
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28596658

复制
相关文章

相似问题

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