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

  • 用户
  • 机械师
  • 交换

  • 每个表中的字段如下
     user        mechanics      exchanges
    ------      ----------      ---------
    name         name           id_user
    id_user      id_mecha       id_mecha
                                message
    

    我想使用类似下面的条件,如果他们的 usermechanic 对它们中的每一个( messageid )匹配,我将选择 exchangesuser 的名称及其相应的 mechanic
    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
    

    最佳答案

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

    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
    

    关于mysql - 在 SQL 中使用 IF/CASE 条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28596658/

    10-12 12:48