是否可以使用if else条件从一个表中获取另一个表的其他表?

时间:2017-11-02 11:47:21

标签: java mysql

select * from table1 t1 if( t1.purchase =='1')
    select t2.price from table2 t2 where t2.id=t1.id
else 
    select t3.price from table3 t3 where t3.id=t1.id
end if as amt

我尝试了这个,但它没有工作如何在SQL中使用if条件并从MySQL数据库中获取详细信息请提示提示。

iam询问condtion是否真的从表2得到,否则表3不是同一个问题

2 个答案:

答案 0 :(得分:2)

我不会尝试从您的SQL代码执行此操作,我将处理Java代码中的查询之间的切换。像这样:

String query1 = "select t2.price from table2 t2 where t2.id = t1.id";
String query2 = "select t3.price from table3 t3 where t3.id = t1.id";
Statement statement = dbConnection.createStatement();
ResultSet rs;
if (t1.purchase == '1') {
    rs = statement.executeQuery(query1);
}
else {
    rs = statement.executeQuery(query2);
}
if (rs.next()) {
    double price = rs.getDouble("price");
}

对于downvotes,是的,OP可能没有最佳的数据库设计。但这种情况有可能在现实生活中合法地发生。

答案 1 :(得分:2)

不知道您的表格,数据和预期输出。
问题应包括这些以获得好的答案。
但是这个查询可能会解决问题。

SELECT
   * 
 , IF(t1.purchase = '1', t2.price, t3.price) as amt
FROM 
 table1 t1

INNER JOIN 
 table2 t2
ON 
 t1.id = t2.id 

INNER JOIN 
 table3 t3 
ON
 t1.id = t3.id

或者在table2或table3中缺少值时使用LEFT JOIN(由于关闭Turo的评论而编辑)

SELECT
   * 
 , IF(t1.purchase = '1', t2.price, t3.price) as amt
FROM 
 table1 t1

LEFT JOIN 
 table2 t2
ON 
 t1.id = t2.id 

LEFT JOIN 
 table3 t3 
ON
 t1.id = t3.i