(一)今天需要在打印页面显示系统录入的时间,时间需要格式化一下,格式化成(2018-03-26)的样子,然后就写了个SQL,照着网上的学习,SQL提供了一个styleID,用来标识每种不同的时间格式,先上我的SQL
1 SELECT APP, 2 APPDEPT, 3 CONVERT(varchar(100),GETDATE(),23) as DININGTIME, 4 DININGPLACE, 5 VISITORSCOUNT, 6 ACCOMPANYINGCOUNT, 7 DININGSTANDARD, 8 a.REMARK 9 FROM LC_ENTERTAINMENTEXPENSE_DY a,LC_ReimbursementInfo_DY b 10 WHERE b.EXGUID = a.REV_CID and b.REV_CID
标红的那一段,23就是styleID,利用convert()函数格式化,然而很尴尬,没有注意到GETDATE(),使得打印页面显示的都是当前时间,然后修改了一下就好了
1 SELECT APP,
2 APPDEPT,
3 CONVERT(varchar(100),DININGTIME,23) as DININGTIME,
4 DININGPLACE,
5 VISITORSCOUNT,
6 ACCOMPANYINGCOUNT,
7 DININGSTANDARD,
8 a.REMARK
9 FROM LC_ENTERTAINMENTEXPENSE_DY a,LC_ReimbursementInfo_DY b
10 WHERE b.EXGUID = a.REV_CID and b.REV_CID
(二) 一个三个表的联合查询,使用inner join
1 select * 2 from T_USER e 3 inner join T_JOB_LINK t on e.USER_CODE = t.USER_CODE 4 inner join T_JOb s on t.JOB_CID = s.CID 5 where t.JOB_CID = '40005177'
(三) 各种join
先创建两个表,一个USA,一个Chinese
(1)inner join
1 -----inner join练习 2 SELECT * FROM dbo.Chinese 3 INNER JOIN dbo.USA 4 ON dbo.Chinese.C_UID = dbo.USA.U_UID
运行结果如下:
(2)left join :以左表为基准,左表所有的行都会显示,即使右表中没有与之对应的数据
1 -----left join练习(左表所有的行都会显示,即使右表没有) 2 SELECT * FROM dbo.Chinese 3 left JOIN dbo.USA 4 ON dbo.Chinese.C_Uname = dbo.USA.U_Uname
运行结果如下所示:
(3)right join:以右表为基准,右表所有的行都会显示,即使左表中没有与之对应的数据
1 -----right join练习(右表所有的行都会显示,即使左表没有) 2 SELECT * FROM dbo.Chinese 3 right JOIN dbo.USA 4 ON dbo.Chinese.C_Uname = dbo.USA.U_Uname
执行结果如下图所示:
(4)full join :所有的数据行都会显示出来,即使两个表没有对应关系的数据,但是两个表的数据都会显示完全
-----full join练习() SELECT * FROM dbo.Chinese full JOIN dbo.USA ON dbo.Chinese.C_Uname = dbo.USA.U_Uname
执行结果如下图所示:
(四)Union语句,用于连接两个SQL语句,单使用Union时,当两个SQL语句查询的结果有两条一模一样的数据时,查询结果只显示一遍
1 SELECT * FROM dbo.Chinese 2 UNION 3 SELECT * FROM dbo.USA 4 5 ---union语句只识别不相同的数据,如果两个表中的某一行数据完全一样,执行结果这个数据只显示一遍
查询结果如下图: