繁体   English   中英

外连接一张表,带有“选择查询”结果

[英]Outer Join One table with result of Select Query

我想从表中已经存在的时间戳中为表中的不同日期添加虚拟时间戳。

我知道我可以使用外部Join来完成此操作,但到目前为止我还没有成功。 仍然对如何执行此操作感到困惑。 这是我到目前为止想出的

     SELECT time_stamp from tbl   
 OUTER JOIN y
 SELECT y.time_stamp =
       SELECT DISTINCT DATE_FORMAT(time_stamp, '%Y-%m-%d') FROM tbl ORDER BY DATE(time_stamp) ASC

原始表格看起来像这样

timestamp           phase_1 phase_2 phase_3
2014-03-04 12:00:00   0       0        0
2014-03-05 02:00:00   0       0        0
2014=03-06 01:00:00   0       0        0
2014-03-07 00:00:00   0       0        0

查询的结果应该是这样的

timestamp           phase_1 phase_2 phase_3
2014-03-04 00:00:00   0       0        0
2014-03-04 12:00:00   0       0        0
2014-03-05 00:00:00   0       0        0
2014-03-05 02:00:00   0       0        0
2014=03-06 00:00:00   0       0        0
2014=03-06 01:00:00   0       0        0
2014-03-07 00:00:00   0       0        0

我知道可以使用OUTER JOIN查询来完成,但是我不知道如何做到。 也许还有更好的方法可以做到这一点。

 SELECT time_stamp from tbl   
 OUTER JOIN y
 SELECT y.time_stamp in(
       SELECT DISTINCT DATE_FORMAT(time_stamp, '%Y-%m-%d') FROM tbl ORDER BY DATE(time_stamp) ASC )

使用“ IN”的最佳方法之一

您正在寻找一种方法来包含每个DATE(00:00:00),除非该日期(00:00:00)已经存在。

select
        `timestamp`
      , phase_1
      , phase_2
      , phase_3
from table1

union

select
        date(`timestamp`)
      , phase_1
      , phase_2
      , phase_3
from table1

order by 
        `timestamp`

它会将每个timestamp “截断”到一个日期,然后使用UNION删除所有重复项。

因此,从此:

timestamp           phase_1 phase_2 phase_3
2014-03-04 12:00:00   0       0        0
2014-03-05 02:00:00   0       0        0
2014=03-06 01:00:00   0       0        0
2014-03-07 00:00:00   0       0        0

它将产生这个

timestamp           phase_1 phase_2 phase_3
2014-03-04 00:00:00   0       0        0     --<< new
2014-03-04 12:00:00   0       0        0
2014-03-05 00:00:00   0       0        0     --<< new
2014-03-05 02:00:00   0       0        0
2014-03-06 00:00:00   0       0        0     --<< new
2014-03-06 01:00:00   0       0        0
2014-03-07 00:00:00   0       0        0

参见: http : //sqlfiddle.com/#!9/c743a4/2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM