SQL将两个表按某相同记录列合并

您所在的位置:网站首页 sql两张表的数据合并 SQL将两个表按某相同记录列合并

SQL将两个表按某相同记录列合并

#SQL将两个表按某相同记录列合并| 来源: 网络整理| 查看: 265

最近在学习SQL语言,不得不说,数据库很强大,操作速度非常快,但语言实在是有些别扭,规范性差且语法不完善。怪不得它叫查询语句,不叫语言。整体学习下来,SQL语言是一个缝缝补补的结果,写起来非常不轻松。同时SQL server的帮助和语言操作能力很差,不利于编程。总之,非常快,非常有用,但非常不好用!

正好遇到这样一个问题,无数次试错后终于得到解决,用来说明以上观点。

有两个表,A和B,两表数据分别如下

表A 表B

操作目的是将两表合并,得到表C,特点是以临时表#A、#B共有的Starting_Timestamp列为关键字进行合并,得到结果C

想得到的结果表C

参考博客http://bbs.csdn.net/topics/370140339得到的准确结果

正确的语法为

SELECT a.Starting_Timestamp, Un3_Avg, Uw3_Avg, RH3_Avg FROM #A a LEFT JOIN #B ON a.Starting_timestamp = #B.Starting_timestamp --或完整写法 SELECT e.Starting_Timestamp, Un3_Avg, Uw3_Avg, RH3_Avg FROM #A LEFT JOIN (SELECT Starting_timestamp, RH3_Avg FROM #B) ON #A.Starting_timestamp = #B.Starting_timestamp

关键点是在SELECT的变量描述中描述结果列出的所有记录名,使用LEFT JOIN连接两个表,而非如下检索语句。

SELECT * FROM #A e LEFT JOIN (SELECT RH3_Avg FROM #B) f --这个方法主要问题出在此处的SELECT上,查询得到的新表并没有包含关键字字段 ON e.Starting_timestamp = Starting_timestamp --但在此处这样一个本应该出错的未知字段因为语法的不严格,判断相等,被解析为赋值而结果出错 结果错误,共36行,是A和B的乘积

若没有在SELECT中描述准确的结果,则会有如下结果

SELECT * FROM #A LEFT JOIN #B ON #A.Starting_timestamp = #B.Starting_timestamp 结果错误,timestamp列出现两次


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3