【问题标题】:case usage in mysqli for selecting and joiningmysqli 中用于选择和加入的案例用法
【发布时间】:2016-03-24 19:26:53
【问题描述】:

大家好,我在从表中选择一些数据然后根据表 1 中字段的值将表与另一个表连接时遇到一个简单的问题

就像我有 table1table2table 3。 我想要

select field1,field2 and then check the value of field 3 if field 3 has value = 1 then select field1,field2,field3 from table 2 and join table 1 with table 2 on field1 and field1 else select field1,field2,field3 from table3 and join table1 with table2 on field1 and field1.

我现在可以做到这一点,但我对此不太满意,请帮我解决问题..

【问题讨论】:

  • 到目前为止你尝试过什么?
  • @Sonam 你试过了吗?
  • 这更像是一个SQL问题,看来,你能给我们举个例子吗?

标签: mysql sql select join case


【解决方案1】:

我认为这可以通过UNION 调用来实现:

SELECT t2.f1, t2.f2, t2.f3
FROM table2 t2
INNER JOIN table1 t1
    ON t1.f1 = t2.f1
WHERE t2.f3 = 1

UNION ALL

SELECT t3.f1, t3.f2, t3.f3
FROM table3 t3
INNER JOIN table1 t1
    ON t1.f1 = t3.f1

【讨论】:

    【解决方案2】:

    试试这个:

    SELECT t1.field1 AS t1field1, 
           t1.field2 AS t1field2, 
           CASE WHEN t1.field3 = 1 THEN t2.field1 ELSE t3.field1 END AS t2t3field1, 
           CASE WHEN t1.field3 = 1 THEN t2.field2 ELSE t3.field2 END AS t2t3field2, 
           CASE WHEN t1.field3 = 1 THEN t2.field3 ELSE t3.field3 END AS t2t3field3
    FROM table1 t1 
    LEFT JOIN table2 t2 ON t1.field1 = t2.field1
    LEFT JOIN table3 t3 ON t1.field1 = t3.field1;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多