2014-11-06 71 views
-1

我有一个表如何选择取决于2结果记录的查询

表一(id,name, start_date)

表B(id(FK to Table a), start_date)

这里是我的问题陈述:

  1. 如果表b中存在id,则从表b中选择start_date的值e从表a中选择默认的start_date

我可以通过有2个独立的查询来获得逻辑工作,我的挑战是在单个查询中实现它吗? 在单个查询中可以实现吗?

+1

是有可能在单个查询来实现吗?是。最简单的方法似乎涉及一个OUTER JOIN(左)和coalese函数,或者可能是一个case语句。其他解决方案也可以工作,但是它们依赖于RDBMS,所以RDBMS是什么和什么版本? (MySQL,SQL Sever(2013)?,Oracle(11i)?,DB2)简单地说,在接近无尽的一系列选项中遇到第一个非空值。与左连接一起使用时,如果它不存在,它将产生一个Null值......似乎适合您的尝试。 @AndreiHirsu似乎已经定义了它。 – xQbert 2014-11-06 13:42:32

回答

3

试试这个:

SELECT 
    a.ID 
    , COALESCE(b.start_date,a.start_date) 
FROM 
    TableA a 
LEFT JOIN 
    TableB b 
ON a.id = b.Id 
+0

谢谢,帮助。对不起,我不是一个普通的SQL程序员,因此没有提供太多的信息。我已经有2个查询的解决方案。只是想进一步优化它。 – netizen 2014-11-07 14:39:54