求sql语句,选最大字段问题

ahking 2003-11-22 09:48:10
1、首先判断某一字段的最大值,然后找出所有等于该最大值的记录,怎么写
2、还有一个数据倒入的问题,数据库内有一表,从excel按字段相同追加数据,同时表内一字段把新追加的数据都赋某一值,怎么写??
...全文
368 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
youngby 2003-12-02
  • 打赏
  • 举报
回复
MARK
ahking 2003-12-02
  • 打赏
  • 举报
回复
大力快看看
ahking 2003-12-02
  • 打赏
  • 举报
回复
我如果对数据库中的日期型字段这样操作convert(char(8),日期型字段,120)可不可以,效率如何?
让select CONVERT(varchar(10), 日期型字段,120) 作为选出来的一列,需要加别名么?如果要加,相当选出几列?一列还是两列?
ken2003 2003-12-02
  • 打赏
  • 举报
回复
gz
tangxc2003 2003-12-02
  • 打赏
  • 举报
回复
1:Select * from 表 where 字段 = (Select max(字段) from 表)
2:SQL数据导入导出
update 表 set 字段 = 新值
ahking 2003-12-02
  • 打赏
  • 举报
回复
UP
ahking 2003-11-26
  • 打赏
  • 举报
回复
up
ahking 2003-11-26
  • 打赏
  • 举报
回复
up
ahking 2003-11-24
  • 打赏
  • 举报
回复
我是说convert(char(8),getdate(),112) 是不是在读取数据的时候对所有记录进行操作导致读出数据变慢??
zjcxc 元老 2003-11-22
  • 打赏
  • 举报
回复
不是速度快不快的问题.

而是在SQL中,那种处理方法的速度是最快的.
pengdali 2003-11-22
  • 打赏
  • 举报
回复
style

日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。

SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。

在表中,左侧的两列表示将 datetime 或 smalldatetime 转换为字符数据的 style 值。给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。

不带世纪数位 (yy) 带世纪数位 (yyyy)
标准
输入/输出**
- 0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM)
1 101 美国 mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英国/法国 dd/mm/yy
4 104 德国 dd.mm.yy
5 105 意大利 dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美国 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]
- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM


* 默认值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始终返回世纪数位 (yyyy)。
** 当转换为 datetime 时输入;当转换为字符数据时输出。
*** 专门用于 XML。对于从 datetime 或 smalldatetime 到 character 数据的转换,输出格式如表中所示。对于从 float、money 或 smallmoney 到 character 数据的转换,输出等同于 style 2。对于从 real 到 character 数据的转换,输出等同于 style 1。

pengdali 2003-11-22
  • 打赏
  • 举报
回复
select CONVERT(varchar(10), getDate(),120) --不要时间2002-1-1
select convert(char(8),getdate(),112) ----20020101
select convert(char(8),getdate(),108) ---06:05:05
pengdali 2003-11-22
  • 打赏
  • 举报
回复
UNION 运算符
将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的全部行。这与使用联接组合两个表中的列不同。

使用 UNION 组合两个查询的结果集的两个基本规则是:

所有查询中的列数和列的顺序必须相同。


数据类型必须兼容。
语法
{ < query specification > | ( < query expression > ) }
UNION [ ALL ]
< query specification | ( < query expression > )
[ UNION [ ALL ] < query specification | ( < query expression > )
[ ...n ] ]

参数
< query_specification > | ( < query_expression > )

是查询规范或查询表达式,用以返回与另一个查询规范或查询表达式所返回的数据组合的数据。作为 UNION 运算一部分的列定义可以不相同,但它们必须通过隐性转换实现兼容。

下表说明数据类型与相应 (ith) 列的选项的比较规则。

ith 列的数据类型 结果表中 ith 列的数据类型
非数据兼容类型(数据转换不由 Microsoft® SQL Server™ 隐性处理)。 SQL Server 返回的错误。
长度为 L1 和 L2 的固定长度 char。 长度与 L1 和 L2 中较长的那个相等的固定长度 char。
长度为 L1 和 L2 的固定长度 binary。 长度与 L1 和 L2 中较长的那个相等的固定长度 binary。
任一列或两列都是可变长度 char。 长度与为 ith 列指定的最大长度相等的可变长度 char。
任一列或两列都是可变长度 binary。 长度与为 ith 列指定的最大长度相等的可变长度 binary。
两列都是数字数据类型(如 smallint、int、float、money)。 与两列的最大精度相等的数据类型。例如,如果表 A 的 ith 列是 int 类型,表 B 的 ith 列是 float 类型,则 ith 列在结果表中的数据类型是 float,因为 float 比 int 更精确。
两列的描述都指定 NOT NULL。 指定 NOT NULL。


UNION

指定组合多个结果集并将其作为单个结果集返回。

ALL

在结果中包含所有的行,包括重复行。如果没有指定,则删除重复行。
ahking 2003-11-22
  • 打赏
  • 举报
回复
to:zjcxc(邹建) union all是什么意思?你的方法快不快oracle的tochar可是很慢啊
xjwxiong 2003-11-22
  • 打赏
  • 举报
回复
select * from A having id=max(id) group by id
zjcxc 元老 2003-11-22
  • 打赏
  • 举报
回复
SQL中的日期格式,可以用convert来指定格式:

--例子:
select convert(varchar(10),getdate(),120)
union all
select convert(varchar,getdate(),102)
union all
select convert(varchar,getdate(),112)

--结果:
------------------------------
2003-11-22
2003.11.22
20031122

(所影响的行数为 3 行)
zjcxc 元老 2003-11-22
  • 打赏
  • 举报
回复
--指明字段,直接追加就行了嘛.

insert into 表(a1,b2,c3) select a1,b2,c3 from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls'
,sheet1$
ahking 2003-11-22
  • 打赏
  • 举报
回复
excel的字段要多于数据库表的,用追加的方式把excel表内数据添加到数据库中,如excel有字段a1,a2,a3,b1,b2,b3,数据库中有字段a1,b2,c3,而且有数据,怎样将excel中的a1,b2,c3的数据追加到数据库中相应字段中?用dts可以直接做到么?
顺便问一另个问题:怎样选择我想要的日期格式,如在库中是datetime,我选出来为yyyymm格式,sql可以这样写么:select *,max(rq)
pengdali 2003-11-22
  • 打赏
  • 举报
回复
2、
update 你的表 set 列=tem.列 from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\aa.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...表名 tem where 你的表.id=tem.id
pengdali 2003-11-22
  • 打赏
  • 举报
回复
1、首先判断某一字段的最大值,然后找出所有等于该最大值的记录,怎么写
select * from TABALENAME where 字段=(select max(字段) from TABLENAME)

2、还有一个数据倒入的问题,数据库内有一表,从excel按字段相同追加数据,同时表内一字段把新追加的数据都赋某一值,怎么写??
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\aa.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...表名


表名的定义默认为页名,你也可以“工具栏-->插入-->名称-->定义”

加载更多回复(8)

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧