Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysqli中用于选择和加入的case用法_Mysql_Sql_Select_Join_Case - Fatal编程技术网

mysqli中用于选择和加入的case用法

mysqli中用于选择和加入的case用法,mysql,sql,select,join,case,Mysql,Sql,Select,Join,Case,您好,我有一个简单的问题,从表中选择一些数据,然后根据表1中字段的值将表与另一个表连接起来 就像我有表1,表2和表3。 我想 选择字段1、字段2,然后检查字段3的值如果字段3的值=1,则从表2中选择字段1、字段2、字段3,并将表1与字段1和字段1上的表2连接,否则从表3中选择字段1、字段2、字段3,并将表1与字段1和字段1上的表2连接 我现在可以这样做了,但我不太喜欢,请帮我解决这个问题。我认为这可以通过使用联合呼叫来实现: SELECT t2.f1, t2.f2, t2.f3 FROM tab

您好,我有一个简单的问题,从表中选择一些数据,然后根据表1中字段的值将表与另一个表连接起来

就像我有表1表2表3。 我想

选择字段1、字段2,然后检查字段3的值如果字段3的值=1,则从表2中选择字段1、字段2、字段3,并将表1与字段1和字段1上的表2连接,否则从表3中选择字段1、字段2、字段3,并将表1与字段1和字段1上的表2连接


我现在可以这样做了,但我不太喜欢,请帮我解决这个问题。

我认为这可以通过使用
联合
呼叫来实现:

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
试试这个:

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;

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