Foxtable(狐表)用户栏目专家坐堂 → 求一个SQL语句


  共有4426人关注过本帖树形打印复制链接

主题:求一个SQL语句

帅哥哟,离线,有人找我吗?
jspta
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/4/8 17:06:00 [只看该作者]

以下是引用e-png在2014-4-8 16:41:00的发言:

7楼有点甜:ok了·······

8楼的:order by 多余了吧,不是有“列2 is not null” 吗

 

再次谢谢



有区别。null 和 '' 这个概念,MSSQL的数据库不认为是一种,Access的好像没区别。


你可以试试看吧。


 回到顶部
帅哥哟,离线,有人找我吗?
e-png
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2014/4/13 13:55:00 [只看该作者]

一、这段SQL语句可以得到查询结果1 (原表数据量大的时候,速度好) 

select 编码, 列1, (select top 1 列2 from {表A} as b where b.编码 = a.编码 and b.列1 = a.列1 and b.列2 > '') as 列2 from {表A} as a Where 编码 = 'sm123'

 

二、这段SQL语句可以得到查询结果2 (原表数据量大的时候,速度显得稍慢) 

select 编码, 列1, (Select RLName from {表B} where [关联列2] = (select top 1 列2 from {表A} as b where b.编码 = a.编码 and b.列1 = a.列1 and b.列2 > '')) as 列2 from {表A} as a Where 编码 = 'sm123'

 

主要是蓝色的部分引起的。 请问还有没有更好的sql句子来加速? (inner join·····  我总是用不好)

 


图片点击可在新窗口打开查看此主题相关图片如下:sql查询.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/4/13 14:13:00 [只看该作者]

你应该先规范下你的表1,把需要的关联编号在导入或录入的时候就生成,这样关联表2只要inner join 表2就行了
你用过度表查询也是可以,但总会增加效率问题,甚至错误。Access表的话数据越大这种问题越明显。

数据库讲究的就是 关联键 ,这个是绝对不能缺失的,所以建议你还是从源表解决这种问题吧。

select c.编码,c.列1, 表2.值 as 列2 from 表2
inner join 
(Select a.编码,a.列1,b.列2 from a left join (select distinct 编码,列1,列2 from a where 列2 not null or 列2 <> '') as b on a.编码 = b.编码 and a.列1 = b.列1)c
on 表2.关联列2 = c.列2

多写写肯定就会了, inner join 比你现在写的还要基础

 回到顶部
帅哥哟,离线,有人找我吗?
e-png
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2014/4/13 20:03:00 [只看该作者]

谢谢jspta

 

我不是在设计,只是做练习:是在原来数据库中的表中做些查询,因为还有其他的列,列2 在初始保存时已不可能都生成(只有隔数行才有一个值的).

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/4/13 20:25:00 [只看该作者]

以下是引用e-png在2014-4-13 20:03:00的发言:

谢谢jspta

 

我不是在设计,只是做练习:是在原来数据库中的表中做些查询,因为还有其他的列,列2 在初始保存时已不可能都生成(只有隔数行才有一个值的).

 

把以前的补起来,再解决今后出现的问题,就可以解决了嘛


 回到顶部
总数 15 上一页 1 2