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不是同一个问题
答案 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