Sql 如何根据两次查询的结果选择记录

Sql 如何根据两次查询的结果选择记录,sql,Sql,我有一张桌子 表a id、名称、开始日期 表b idFK至表a,开始日期 以下是我的问题陈述: 如果表b中存在id,则从表b中选择开始日期的值,否则从表a中选择默认开始日期 我可以通过两个独立的查询来实现逻辑,我的挑战是如何在单个查询中实现它? 是否可以在单个查询中实现?尝试以下操作: SELECT a.ID , COALESCE(b.start_date,a.start_date) FROM TableA a LEFT JOIN TableB b ON a.id =

我有一张桌子

表a id、名称、开始日期

表b idFK至表a,开始日期

以下是我的问题陈述:

如果表b中存在id,则从表b中选择开始日期的值,否则从表a中选择默认开始日期 我可以通过两个独立的查询来实现逻辑,我的挑战是如何在单个查询中实现它?
是否可以在单个查询中实现?

尝试以下操作:

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

是否可以在单个查询中实现?:是。最简单的方法似乎涉及一个外部连接LEFT和coalese函数,或者可能是一个case语句。其他解决方案也可以工作,但是它们依赖于RDBMS,那么这是什么RDBMS,是什么版本?MySQL、SQL Sever2013?、Oracle11i?、DB2 coalesce只是简单地说,获取在提供的一系列选项中遇到的第一个非空值。当与左连接一起使用时,如果左连接不存在,将生成空值。。。似乎适合你的尝试@AndreiHirsu似乎已经定义好了。谢谢你的帮助。对不起,我不是一个普通的SQL程序员,因此没有提供太多的信息。我已经有了2个查询的解决方案。只是想进一步优化它。