sql语句查询excel 2003表,求一sql语句

神马被哪个妞占用了呢 2012-09-07 01:48:35
一个excel表格,4列,6万行左右。
例表:

A        B        C        D
0 1 1 5
1 2 3 2
0 7 1 6
3 2 2 2
0 6 3 7
3 1 1 7


要查询A列和C列同时重复的记录,比如上面的第一、第三行……


  Dim lsSql As String
Dim lrRec As ADODB.Recordset
Dim ldbConn As New ADODB.Connection


ldbConn.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=DSN=Excel Files;DBQ=" & "c:\1.xls; DefaultDir=c:\ ;DriverId=790;MaxBufferSize=2048;PageTimeout=5;"

ldbConn.Open
lsSql = "SELECT * "
lsSql = lsSql & "......."

Set lrRec = New ADODB.Recordset
lrRec.CursorLocation = adUseClient
lrRec.Open lsSql, ldbConn, adOpenForwardOnly, adLockReadOnly

...全文
122 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
excel效率还是不怎么的……改数据库了,感谢各位抽时间来看。
  • 打赏
  • 举报
回复
多谢了……额,我测试下看看……
贝隆 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
可以直接用ado,把excel做外部数据库
SELECT DISTINCT s.*
FROM (SELECT A,B,C,D FROM [Sheet1$] ) AS s,(SELECT A,B,C,D FROM [Sheet1$] ) AS t
WHERE s.A=t.A AND s.C=t.C AND s.B<>t.B

结果:
0,1,1,5
0,1,1,6
0,1,1,9
……
[/Quote]
+1
孤独剑_LPZ 2012-09-07
  • 打赏
  • 举报
回复
可以直接用ado,把excel做外部数据库
SELECT DISTINCT s.*
FROM (SELECT A,B,C,D FROM [Sheet1$] ) AS s,(SELECT A,B,C,D FROM [Sheet1$] ) AS t
WHERE s.A=t.A AND s.C=t.C AND s.B<>t.B

结果:
0,1,1,5
0,1,1,6
0,1,1,9
0,7,1,6

正确结果应是
0,1,1,5
0,7,1,6
如果是,sql代码可以再改一下
of123 2012-09-07
  • 打赏
  • 举报
回复
Excel 可以当作 Jet Enine 的外部数据库来查询。

不过 SQL 语句无法直接支持重复判断的查询。需要多条语句或嵌套语句来实现。例如:

Select * From yourtable Where A*10+C IN (Select x From (Select A*10+C As x, Count(*) As m Group by A*10+C) Where m > 1)


  • 打赏
  • 举报
回复

A        B        C        D
0 1 1 5 '第一行
1 2 3 2 '第二行
0 7 1 6 '第三行
3 2 2 2 '第四行
0 6 3 7 '第五行
3 1 1 7 '第六行
0 1 1 6 '第七行
0 1 1 9 '第八行


要求重新变化了下,查询的结果只要有第一行(或第七行或第八行)和第二行,也就是说,A列和C列重复,B列不重复的才进入查询结果集……
  • 打赏
  • 举报
回复
那几个“.......”要怎么写才效率高点(最好不要导入到数据库中操作,我想直接操作excel表)

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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